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가 정상적으로 가져와진것을 확인할 수 있다.
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가 온것을 확인할 수 있다.
반응형