스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의 | 김영한 - 인프런
김영한 | , 원리를 알아야 핵심이 보인다!김영한의 스프링 MVC 활용편 👨💻 📌 수강 전 확인해주세요! 본 강의는 자바 스프링 완전 정복 시리즈의 다섯 번째 강의입니다. 우아한형제들 최연소
www.inflearn.com
HttpServletRequest
서블릿은 HTTP 요청 메세지를 파싱하고 그 결과를 HttpServletRequest 객체에 담아서 제공해 준다.
이 외에도 여러 부가기능을 제공한다.
임시 저장소 기능 (해당 HTTP 요청의 시작부터 끝날 때까지 유지되는 임시 저장소 기능)
- 저장 :
request.setAttribute(name, value) - 조회 :
request.getAttribute(name)
세션 관리 기능 request.getSession(true)
- true : 세션이 있으면 기존 세션 반환, 없으면 새로 생성
getSession()과getSession(true)은 동일하다! (기본값이 ture)
- false : 세션이 있으면 기존 세션 반환, 없으면 null 반환
HTTP 요청 데이터
HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자.
주로 다음 3가지 방법을 사용한다.
1. GET - 쿼리 파라미터
- localhost:8080/request-param?username=hello&age=20
- URL에 다음과 같이
?를 시작으로 보내고 추가 파라미터는&로 구분 - 메시지 바디 없이 URL의 쿼리 파라미터에 데이터를 포함해서 전달
- ex) 검색, 필터, 페이징등에서 많이 사용하는 방식
// 단일 파라미터 조회 (하나의 이름에 하나의 값만 있을 때 사용해야 함)
String username = request.getParameter("username");
// 파라미터 이름들 모두 조회
Enumeration<String> parameterNames = request.getParameterNames();
// 파라미터를 Map으로 조회
Map<String, String[]> parameterMap = request.getParameterMap();
// 복수 파라미터 조회 (하나의 이름에 값이 여러 개일 때)
String[] usernames = request.getParameterValues("username");
2. POST - HTML Form
- content-type: application/x-www-form-urlencoded
- content-type : 메세지 바디의 데이터 형식 지정
- application/x-www-form-urlencoded : 폼으로 데이터를 전송하는 형식
- 메시지 바디에 쿼리 파리미터 형식으로 전달 (username=hello&age=20)
- ex) 회원 가입, 상품 주문, HTML Form 사용
파라미터 조회는 GET과 동일한 방식으로 사용하면 된다!
3. HTTP message body에 데이터를 직접 담아서 요청
- HTTP API에서 주로 사용 (JSON, XML, TEXT)
- 데이터 형식은 주로 JSON 사용
- POST, PUT, PATCH 사용 가능
메세지 바디 - TEXT
ServletInputStream inputStream = request.getInputStream(); // 메세지 바디의 내용을 바이트 코드로 반환
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);
메세지 바디 - JSON
private ObjectMapper objectMapper = new ObjectMapper(); // JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환
JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면 Jackson, Gson 같은 JSON 변환 라이브러리를 추가해서 사용해야 한다.
스프링 부트로 Spring MVC를 선택하면 기본으로 Jackson 라이브러리 (ObjectMapper)를 함께 제공한다.
HttpServletResponse
- HTTP 응답 메시지 생성
- HTTP 응답코드 지정
- 헤더 생성
- 바디 생성
- 편의 기능 제공
Content 편의 메서드
private void content(HttpServletResponse response) {
//Content-Type: text/plain;charset=utf-8
//Content-Length: 2
//response.setHeader("Content-Type", "text/plain;charset=utf-8");
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);
}
redirect 편의 메서드
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");
}'강의 > 스프링 MVC 2편' 카테고리의 다른 글
| 서블릿과 멀티스레드 (1) | 2025.01.29 |
|---|