@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("HelloServlet.service");
System.out.println("request = " + request);
System.out.println("response = " + response);
}
request = org.apache.catalina.connector.RequestFacade@49a07c45
response = org.apache.catalina.connector.ResponseFacade@67b0b9cb
여러가지 WAS들이 있을텐데 그들이 각각 HttpServletRequest ,Response 등등의 인터페이스 스펙에 맞춰서 구현체를 만들어 낸것이다.
service 메소드안에 request parameter를 받아서 response를 생성해보는 코드이다.
String username = request.getParameter("username");
System.out.println("username = " + username);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
response.getWriter().write("hello"+ username);
HttpServletRequest 역할 = 개발자가 편리하게 HTTP 요청 메시지를 사용할 수있도록 개발자 대신에 HTTP 요청 메세지를 파싱한다. 그리고 그결과를 HttpServletRequest 객체에 담아서 제공한다.
HTTP 요청 데이터 - 3가지 방법
- Get 쿼리 파라미터 = 메시지 바디없이
- POST HTML form(tag) = 메세지 받에 쿼리 파라미터 형식으로 전달
(cotent-type : application/x-www-form-urlencoded) - JSON
HTTP 요청 데이터 - API 메세지 바디 - JSON
@WebServlet(name = "requestBodyJsonServlet",urlPatterns = "/request-body-json")
public class RequestBodyJsonServlet extends HttpServlet
{
private ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
System.out.println("helloData.getUsername() = " + helloData.getUsername());
System.out.println("helloData.getAge() = " + helloData.getAge());
}
}
messageBody = {
"username":"hello",
"age":20
}
helloData.getUsername() = hello
helloData.getAge() = 20
JSON도 그냥 String 일 뿐임으로 getInputStream() 으로 받아올 수 있다. 후에 objectMapper를 통해서 저절로 순수 자바 객체랑 매핑을 해준다.
HttpServeltResponse 사용법
HTTP 응답코드 지정, 헤더 생성, 바디 생성, 쿠키 , Redirect
@WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header")
public class ResponseHeaderServlet extends HttpServlet
{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//status-line
response.setStatus(HttpServletResponse.SC_OK);
String tony = "tonyisfancy";
//response header
response.setHeader("Content-Type", "text/plain");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Paragma", "no-cache");
response.setHeader("my-header", "hello");
Cookie cookie = new Cookie("tonyname", tony);
cookie.setMaxAge(600);
response.addCookie(cookie);
response.sendRedirect("https://tonylim.tistory.com");
response.getWriter().println("ok");
}
}
쿠키및 리다이렉션 설정도 편하게 제공해준다.
'WEB > Spring MVC 1' 카테고리의 다른 글
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(스프링 MVC - 기본기능) (0) | 2021.03.30 |
---|---|
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(스프링 MVC - 구조이해) (0) | 2021.03.29 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(MVC 프레임워크 만들기) (0) | 2021.03.29 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(서블릿,JSP,MVC패턴) (0) | 2021.03.28 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술(웹 애플리케이션 이해) (0) | 2021.03.27 |