Hyunebee
스프링MVC - Servlet 본문
HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 다음 메서드를 실행한다.
protected void service(HttpServletRequest request, HttpServletResponse response)
HttpServletRequest사용
HTTP 요청 메세지를 직접 파싱해서 사용해도 되지만 불편 HttpServletRequest는 이를 대신 파싱해주고 그 결과를 객체에 담아서 제공한다.
START LINE
HTTP 메소드 : request.getMethod()
URL : request.getRequestURL(),request.getRequestURI()
쿼리 : request.getQueryString()
스트링 스키마,프로토콜 : request.getScheme() , request.getProtocol()
헤더
헤더 조회 : request.getHeaderNames() =for, asIterator()사용
하나씩 조회도 가능하다.
바디
form 파라미터 형식 조회
message body 데이터 직접 조회
HTTP 요청 데이터 - 개요
전달 데이터 username = hello, age = 20
1.GET - 쿼리 파라미터
message Body x, URL의 쿼리파라미터에 데이터를 포함 전달
검색 필터 페이징에 주로 사용
쿼리 파라미터는 URL에 다음과 같이 ? 를 시작으로 보낼 수 있다. 추가 파라미터는 & 로 구분하면 된다
단일 객체 조회 : request.getParameter()
중복 객체 조회 : request.getParameterValues()
2.POST - Form 사용
메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20
request.getParameter() 는 GET URL 쿼리 파라미터 형식도 지원하고, POST HTML Form 형식도 둘 다 지원한다.
단일 객체 조회 : request.getParameter()
이때 GET은 message body 사용을 하지않고 POST는 사용하기 때문에 POST에 content-type : application/x-www-form-urlencoded 가 있다.
3.HTTP message Body에 직접 담아서 요청
HTTP API에서 주로 사용, JSON, XML, TEXT
JSON은 우리가 파싱할 수 있는 객체가 있어야 한다.
private ObjectMapper objectMapper = new ObjectMapper(); 를 사용
ServletInputStream inputStream = request.getInputStream(); // 읽어온 Stream을 byte로 변경
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); // String으로 바꿔준다.
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class); // 해당 객체 타임으로 매핑
이제 helloData사용해서 출력할 수 있다.
HttpServletResponse 사용
HTTP응답 메세지 생성
1. 응답코드 지정
2. Content- type
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/plain;charset=utf-8");
3. 바디 생성
4. 쿠키 생성
Cookie cookie = new Cookie("myCookie", "good");
cookie.setMaxAge(600); //600초
response.addCookie(cookie);
5. redirect
response.sendRedirect("/url");
'Spring > MVC' 카테고리의 다른 글
스프링MVC - frontController(4) (0) | 2022.01.14 |
---|---|
스프링MVC - frontController(3) (0) | 2022.01.14 |
스프링MVC - frontController(2) (0) | 2022.01.14 |
스프링MVC - frontController(1) (0) | 2022.01.14 |
스프링 MVC - 웹 어플리케이션 이해 (0) | 2022.01.09 |