스프링MVC

HttpServletResponse 사용

salmon16 2023. 8. 2. 21:52

Http의 헤더 부분을 설정해 보자

 

메시지 타입 설정

response.setContentType("text/plain") 하면 보낼 메시지의 타입을 설정할 수 있다.

response.setCharacterEncoding("utf-8") 인코딩 방식을 설정할 수 있다.

 

쿠키 설정 메서드 

Cookie cookie = new Cookie("myCookie", "good") 쿠키 객체 생성

cookie.setMaxAge(600);  600초 동안 유지

response.addCookie(cookie) 쿠기 추가하기

 

redirect 메서드

response.sendRedirect("/basic/hello-form.html");  현재 페이지가 호출되면 /basic/hello-form.html로 이동한다.

 

HTTP응답 데이터

단순 텍스트는 getWritet().println()메서드를 통해 보낼 수 있다.

PrintWriter writer = response.getWriter();
writer.println("ok");

서블릿에서 html을 전송하려면 직접 헤더에 타입을 설정한 후 getWriter()메서드를 통해 println()을 해야 한다.

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //Content-Type: text/html;charset=utf-8
    response.setContentType("text/html");
    response.setCharacterEncoding("utf-8");
    PrintWriter writer = response.getWriter();
    writer.println("<html>");
    writer.println("<body>");
    writer.println(" <div>안녕?</div>");
    writer.println("</body>");
    writer.println("</html>");
}

서블릿으로 JSON을 전송해 보자.

전에 했던 방식과 같게 타입을 application/json으로 설정 후 ObjectMapper() 객체를 사용하면 된다.

public class ResponseJsonServlet extends HttpServlet {
    private ObjectMapper objectMapper = new ObjectMapper();
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //Content-Type: application/json
        response.setHeader("content-type", "application/json");
        response.setCharacterEncoding("utf-8");
        HelloData data = new HelloData();
        data.setUsername("kim");
        data.setAge(20);
        //{"username":"kim","age":20}
        String result = objectMapper.writeValueAsString(data);
        response.getWriter().write(result);
    }

writeValuesAsString 메서드를 통해 json을 string으로 바꿔준 후 전송한다.

 

출처 : 스프링MVC 1편 - 백엔드 웹 개발 핵심 기술 김영한

'스프링MVC' 카테고리의 다른 글

MVC패턴  (0) 2023.08.04
JSP 사용하기  (0) 2023.08.02
HTTP 요청 데이터  (0) 2023.08.02
서블릿 사용해 보기  (0) 2023.08.01
멀티 쓰레드  (0) 2023.07.31