# Spring MVC / HttpServletResponse
Study Repository

Spring MVC / HttpServletResponse

by rlaehddnd0422

HttpServletResponse ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

์—ญํ•  

๊ธฐ๋ณธ์ ์œผ๋กœ HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ.

ํŽธ์˜ ๊ธฐ๋Šฅ์œผ๋กœ๋Š” Content-type ์„ค์ •. ์ฟ ํ‚ค ์„ค์ •. ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฐธ๊ณ .

https://rlaehddnd0422.tistory.com/44#3xx%20(Redirection)%20-%20%EB%A6%AC%EB%8B%A4%EC%9D%B4%EB%A0%89%EC%85%98-1 

 

HTTP ์ƒํƒœ์ฝ”๋“œ / 1~5XX

์ƒํƒœ์ฝ”๋“œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ์ƒํƒœ๋ฅผ ์‘๋‹ต์—์„œ ์•Œ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ 1xx (Informational) : ์š”์ฒญ์ด ์ˆ˜์‹ ๋˜์–ด ์ฒ˜๋ฆฌ์ค‘ 2xx (Successful) : ์š”์ฒญ ์ •์ƒ ์ฒ˜๋ฆฌ 3xx (Redirection) : ์š”์ฒญ์„ ์™„๋ฃŒํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ํ–‰๋™

rlaehddnd0422.tistory.com

 

package hello.servlet.basic.response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "responseHeaderServlet",urlPatterns = "/response-header")
public class ResponseHeaderServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setStatus(HttpServletResponse.SC_OK); // 200
        response.setHeader("Content-type","text/plain");
        response.setHeader("Cache-Control","no-cache,no-store,must-revalidate");
        response.setHeader("Pragma","no-cache");
        response.setHeader("my-header","hello");

        content(response);
        cookie(response);
        redirect(response);

        // message body
        PrintWriter writer = response.getWriter();
        writer.println("OK");
    }

    private void content(HttpServletResponse response) {
    //Content-Type: text/plain;charset=utf-8
    //Content-Length: 2
    response.setContentType("text/plain");
    response.setCharacterEncoding("utf-8");
    //response.setContentLength(2); //(์ƒ๋žต์‹œ ์ž๋™ ์ƒ์„ฑ)
    }

    private void cookie(HttpServletResponse response) {
        // Set-Cookie: myCookie=good; Max-Age=600;
        // response.setHeader("Set-Cookie", "myCookie=good; Max-Age=600");
        Cookie cookie = new Cookie("myCookie", "good");
        cookie.setMaxAge(600); //600์ดˆ
        response.addCookie(cookie);
    }

    private void redirect(HttpServletResponse response) throws IOException {
        //Status Code 302
        //Location: /basic/hello-form.html

//        response.setStatus(HttpServletResponse.SC_FOUND); //302
//        response.setHeader("Location", "/basic/hello-form.html");
        response.sendRedirect("/basic/hello-form.html");
    }
}
  • setXXX์„ ํ†ตํ•ด ํ—ค๋”์ •๋ณด๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
  • ex) ContentType์ด๋‚˜ Encoding ๋ฐฉ์‹ ๋“ฑ
  • ex) setStatus ๋กœ ์ƒํƒœ์ฝ”๋“œ ์„ค์ •๊ฐ€๋Šฅ
  • setHeader("ํ—ค๋”์ด๋ฆ„", ๊ฐ’)์œผ๋กœ ํ—ค๋” ์ •๋ณด๋ฅผ ์ง์ ‘ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฟ ํ‚ค๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด addCookie๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
  • sendRedirect๋ฅผ ํ†ตํ•ด ๋ฆฌ๋‹ค์ด๋ ‰์…˜ํ•  URI๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HTTP Response ๋ฐ์ดํ„ฐ - ๋‹จ์ˆœ ํ…์ŠคํŠธ๋‚˜ HTML

 

๋‹จ์ˆœ ํ…์ŠคํŠธ ์‘๋‹ต

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

HTML ์‘๋‹ต

package hello.servlet.basic.response;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name="responseHTMLServlet", urlPatterns = "/response-html")
public class ResponseHTMLServlet extends HttpServlet {
    @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>");

    }
}

Content-Type : text/html๋กœ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

HTTP Response - JSON

package hello.servlet.basic.response;

import com.fasterxml.jackson.databind.ObjectMapper;
import hello.servlet.basic.HelloData;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name="responseJSONServlet",urlPatterns = "/response-json")
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.setContentType("application/json");
        response.setCharacterEncoding("utf-8");

        HelloData hellodata = new HelloData();
        hellodata.setName("Kim");
        hellodata.setAge(20);

        String s = objectMapper.writeValueAsString(hellodata);

        response.getWriter().write(s);

    }
}

Content-Type : application/json์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+ Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” objectMapper.writeValueAsString() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  : application/json์€ ์ŠคํŽ™ ์ƒ utf-8ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 

Content-type : application/json;charset=utf-8 ์ด๋ผ๊ณ  ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ์—†๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด ๋ฉ๋‹ˆ๋‹ค.

 

'๐Ÿ“• Java&Spring > MVC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Front-Controller ํŒจํ„ด  (0) 2023.02.27
Spring / MVC ํŒจํ„ด  (0) 2023.02.24
Spring / ์ˆœ์ˆ˜ Servlet ํŒจํ„ด, JSP ํŒจํ„ด  (0) 2023.02.23
Spring MVC / HttpServletRequest  (0) 2023.02.22
Spring MVC / ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  (0) 2023.02.21

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ