Spring/MVC

[Spring] Servlet에서 Request 처리해 Response 리턴하기

Dev.Cho 2022. 1. 4. 09:56

Servlet에서 Request의 파라미터를 받아오는 방법

예를 들어 다음과 같이 user에 대한 쿼리를 넣어 http 요청을 한다고 해보자.

http://localhost:8080/hello?user=devcho

 

서블릿 상에서 위 user을 받아오기 위해서는 HttpServletRequest 인터페이스의 getParameter 메서드를 이용하면 된다. getParameter은 인풋을 String으로 받으며 결과값을 리턴하는 메서드로 user 파라미터를 받아오기 위해 다음과 같이 사용할 수 있다.

@WebServlet(name = "helloServlet", urlPatterns = ["/hello"])
class HelloServlet : HttpServlet() {

    override fun service(request: HttpServletRequest?, response: HttpServletResponse?) {
        log("HelloServlet Test")
        log("request user: ${request?.getParameter("user")}") //user 파라미터 받아오기
    }
}

 

위 코드를 실행하면 다음과 같은 결과가 나온다. 맨 마지막 줄에 user: devcho가 정상적으로 가져와진것을 확인할 수 있다.

그림1. Request처리

 

 

Servlet에 Response 리턴하기

위에서 생성한 request에 대한 응답을 리턴하는 것이 http의 기본 동작이다. 우리는 HttpServletResponse 를 조작함으로써 응답을 만들어낼 수 있다.

 

response는 그 자체로 응답으로, kotlin에서는 다음과 같이 직접 변수를 조작한다.

  • contentType을 "text/plain" 으로 설정한다.
  • characterEncoding을 "utf-8" 로 설정한다.
  • 응답 값을 writer 객체를 이용해 write한다. 응답값은 "user ${user} entered" 이다.
@WebServlet(name = "helloServlet", urlPatterns = ["/hello"])
class HelloServlet : HttpServlet() {

    override fun service(request: HttpServletRequest?, response: HttpServletResponse?) {
        log("HelloServlet Test")
        val user = request?.getParameter("user")
        
        response?.contentType = "text/plain"
        response?.characterEncoding = "utf-8"
        response?.writer?.write("user ${user} entered")
    }
}

 

위와 같이 코드를 작성하면 Response의 Content-Type 헤더가 text/plain에 charset이 utf-8이 된 것을 확인할 수 있고 body에는 user devcho entered가 온것을 확인할 수 있다.

그림2. Header
그림3. Body

 

반응형