* 스프링 입문은 Window로 스프링 MVC 1편은 Mac으로 진행합니다
* 진도 : 섹션2 - (11) ~ (13)
* : 자바 클래스명, : 코드, : 단축키
1. HTTP 응답
- 단순 텍스트 응답
( writer.println("ok"); ) - HTML 응답
- HTTP API - MessageBody JSON 응답
2. HTTP 응답 - HTML 버전
[ src - main - java - hello.servlet - basic - response - ResponseHtmlServlet ]
- public class ResponseHtmlServlet extends HttpServlet
- 서블릿을 사용하기 위해 HttpServlet을 상속받는다
- @WebServlet(name = "responseHtmlServlet ", urlPatterns = "/response-html" )
- 해당 어노테이션에 경로를 입력하면 클라이언트에서 톰캣서버가 찾아서 실행한다
- /response-html 입력하면 하위 메서드 실행
@WebServlet(name = "responseHtmlServlet", urlPatterns = "/response-html")
public class ResponseHtmlServlet extends HttpServlet {
- protected service (control + o)
protected void service(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
- content -type 설정
- .jsp파일이나 .html파일에서 폼 태그에 입력한 값을 전송한다고 가정
- 입력한 값을 전송할 때는 GET방식 or POST방식으로 나뉜다
- POST방식: 보내는 값이 '한글'일 경우 깨지지 않게 하기 위해 request.setCharacterEncoding("UTF-8"); 사용
- GET방식: 보내진 한글은 톰캣이 기본적으로 UTF-8 문자코드가 적용이 되어 있어서 자동으로 한글처리
- response.setCharacterEncoding("utf-8")
- 위의 코드없이 out.print("안녕");를 출력 한다면 ????과 같이 출력 된다
- 해결 방법 response.setCharacterEncoding("UTF-8");
- response.setContentType("text/html")
- response.setCharacterEncoding("UTF-8");만 사용하면 '안녕' → '댊뀘'과 같은 문자가 출력
- 이는 브라우저마다 기본적으로 문자코드를 해석하는 default가 다르기 때문이다
- 해결 방법 response.setContentType("text/html);
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>");
< 결과 >
http://localhost:8080/response-html
출력 : 안녕?
3. HTTP 응답 - API 버전
[ src - main - java - hello.servlet - basic - response - ResponseJsonServlet ]
- public class ResponseJsonServlet extends HttpServlet
- 서블릿을 사용하기 위해 HttpServlet을 상속받는다
- @WebServlet(name = "responseJsonServlet ", urlPatterns = "/response-json" )
- 해당 어노테이션에 경로를 입력하면 클라이언트에서 톰캣서버가 찾아서 실행한다
- /response-json 입력하면 하위 메서드 실행
@WebServlet(name = "responseJsonServlet", urlPatterns = "/response-json")
public class ResponseJsonServlet extends HttpServlet {
- protected service (control + o)
protected void service(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
- content -type 설정
- application/json
- HTTP 응답으로 JSON을 반환할 때는 content-type을 application/json 로 지정
- charset=utf-8 지원하지 않는다
- pplication/json;charset=utf-8 라고 전달할 필요 X
- response.setCharacterEncoding("utf-8")
- 위의 코드없이 out.print("안녕");를 출력 한다면 ????과 같이 출력 된다
- 해결 방법 response.setCharacterEncoding("UTF-8");
- application/json는 charset=utf-8
- response.setContentType("text/html")
- response.setCharacterEncoding("UTF-8");만 사용하면 '안녕' → '댊뀘'과 같은 문자가 출력
- 이는 브라우저마다 기본적으로 문자코드를 해석하는 default가 다르기 때문이다
- 해결 방법 response.setContentType("text/html);
response.setHeader("content-type", "application/json");
response.setCharacterEncoding("utf-8");
- Jackson 라이브러리 생성
private ObjectMapper objectMapper = new ObjectMapper(); // 선언
- HelloData Json 형태로 바꾸기 (option + command + v)
HelloData helloData = new HelloData();
helloData.setUsername("kim");
helloData.setAge(20);
- writeValueAsString(data)
- data를 String 타입으로 변환
- objectMapper.writeValueAsString() 를 사용하면 객체를 JSON 문자로 변경해준다
String result = objectMapper.writeValueAsString(data);
- 출력
response.getWriter().write(result);
< 결과 >
실행 : http://localhost:8080/response-json
출력
{"username":"kim","age":20}
[출처] 김영한 강사님 인프런 스프링 mvc1
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원
www.inflearn.com
'Spring > 스프링 MVC' 카테고리의 다른 글
[스프링 MVC 1편] 3 - (2) 서블릿 회원 관리 웹 애플리케이션 (0) | 2023.11.07 |
---|---|
[스프링 MVC 1편] 3 - (1) 웹 애플리케이션 요구사항 (0) | 2023.11.05 |
[스프링 MVC 1편] 2 - (5) HttpServletResponse (0) | 2023.11.03 |
[스프링 MVC 1편] 2 - (4) HTTP 요청 데이터 (0) | 2023.11.02 |
[스프링 MVC 1편] 2 - (3) HttpServletRequest (0) | 2023.10.23 |