검색결과 리스트
HttpServletResponse에 해당되는 글 2건
- 2021.09.30 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 6
- 2021.08.30 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 4
글
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 6
인프런 강의 24일차.
- 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 1 (김영한 강사님)
- HttpServletResponse
1. HttpServletResponse의 역할
- HTTP 응답 메시지 생성
: HTTP 응답 코드 지정
: 헤더 생성
: 바디 생성
- 편의 기능 제공
: Content-type
: 쿠키
: Redirect
2. HttpServletResponse 기본 사용법
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 {
//[status-line]
response.setStatus(HttpServletResponse.SC_OK); //response.setStatus(200); SC_OK는 200의 값을 의미함. 200 하드코딩 보다 SC_OK를 사용하자
//[response-headers]
response.setHeader("Content-type", "text/plain;charset=utf-8");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); //캐시 무효화
response.setHeader("Pragma", "no-cache"); //과거 버전 캐시도 무시
response.setHeader("my-header", "hello"); //사용자 임의 헤더 정의도 가능
PrintWriter writer = response.getWriter();
writer.print("안녕하세요");
//[Header 편의 메소드]
content(response); //컨텐츠 세팅
cookie(response); //쿠키 세팅
redirect(response); //라다이렉션 세팅
}
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);
response.addCookie(cookie);
}
private void redirect(HttpServletResponse response) throws IOException {
//Status Code 302로 세팅 후 Location으로 리다이렉트하는 메소드
//Location : /basic/hello-form.html
response.setStatus(HttpServletResponse.SC_FOUND); //302
response.setHeader("Location", "/basic/hello-form.html");
// response.sendRedirect("/basic/hello-form.html");
}
}
- content, cookie, redirect 세팅 방법
'Spring 정리' 카테고리의 다른 글
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 8 (0) | 2021.10.05 |
---|---|
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 7 (0) | 2021.10.05 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 5 (0) | 2021.09.27 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 4 (0) | 2021.08.30 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 3 (0) | 2021.08.25 |
설정
트랙백
댓글
글
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 4
인프런 강의 22일차.
- 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 1 (김영한 강사님)
1. HttpServletRequest의 역할
- HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다. 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServeltRequest 객체에 담아서 제공한다.
- HttpServletRequest를 사용하면 다음과 같은 HTTP 요청 메시지를 편리하게 조회할 수 있다.
- HTTP 요청 메시지
> POST /save HTTP/1.1
> Host : localhost:8080
> Content-type : application/www- x-form-urlencoded
> username&age=40
- START LINE
> HTTP 메소드
> URL
> 쿼리 스트링
> 스키마, 프로토콜
- Header
> Header 조회
- Body
> form 파라미터 형식 조회
> message body 데이터 직접 조회
* HttpServletRequest 객체는 추가로 여러가지 부가 기능도 제공한다.
- 임시 저장소 기능
> 해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능
> 저장 : request.setAttribute(name, value)
> 조회 : request.getAttribute(name)
- 세션 관리 기능
> request.getSession(create:true);
- 중요 : HttpServletRequest, HttpServletResponse를 사용할 때 주의할 점은 이 객체들이 HTTP 요청 메시지, HTTP 응답 메시지를 편리하게 사용할 수 있도록 도와주는 객체라는 점이다. (따라서 이 기능에 대해 깊이있는 이해를 소장하려면 'HTTP 스펙이 제공하는 요청&응답 메시지 차를 이해애야 한다.
2. HttpServletRequest 기본 사용법
- printStartLine(request) : header의 기본 정보들 표시
private void printStartLine(HttpServletRequest request) {
System.out.println("--- REQUEST-LINE - start ---");
System.out.println("request.getMethod() = " + request.getMethod()); //GET
System.out.println("request.getProtocal() = " + request.getProtocol()); //HTTP 1.1
System.out.println("request.getScheme() = " + request.getScheme()); //http
// http://localhost:8080/request-header
System.out.println("request.getRequestURL() = " + request.getRequestURL());
// /request-test
System.out.println("request.getRequestURI() = " + request.getRequestURI());
//username=hi
System.out.println("request.getQueryString() = " +
request.getQueryString());
System.out.println("request.isSecure() = " + request.isSecure()); //https 사용 유무
System.out.println("--- REQUEST-LINE - end ---");
System.out.println();
}
- printHeader(reqeust) : header의 모든 내용 표시
//Header 모든 정보
private void printHeader(HttpServletRequest request){
System.out.println("--- Headers - Start ---");
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
System.out.println(headerName + " : " + headerName);
}
System.out.println("--- Headers - End ---");
}
- printHeaderUtils(request) : header의 정보를 간추려서 표시
//Header 편리한 조회
private void printHeaderUtils(HttpServletRequest request) {
System.out.println("--- Header 편의 조회 start ---");
System.out.println("[Host 편의 조회]");
System.out.println("request.getServerName() = " +
request.getServerName()); //Host 헤더
System.out.println("request.getServerPort() = " +
request.getServerPort()); //Host 헤더
System.out.println();
System.out.println("[Accept-Language 편의 조회]");
request.getLocales().asIterator()
.forEachRemaining(locale -> System.out.println("locale = " +
locale));
System.out.println("request.getLocale() = " + request.getLocale());
System.out.println();
System.out.println("[cookie 편의 조회]");
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
System.out.println(cookie.getName() + ": " + cookie.getValue());
}
}
System.out.println();
System.out.println("[Content 편의 조회]");
System.out.println("request.getContentType() = " +
request.getContentType());
System.out.println("request.getContentLength() = " +
request.getContentLength());
System.out.println("request.getCharacterEncoding() = " +
request.getCharacterEncoding());
System.out.println("--- Header 편의 조회 end ---");
System.out.println();
}
- printEtc(request) : header의 기타 정보 표시
private void printEtc(HttpServletRequest request) {
System.out.println("--- 기타 조회 start ---");
System.out.println("[Remote 정보]");
System.out.println("request.getRemoteHost() = " +
request.getRemoteHost()); //
System.out.println("request.getRemoteAddr() = " +
request.getRemoteAddr()); //
System.out.println("request.getRemotePort() = " +
request.getRemotePort()); //
System.out.println();
System.out.println("[Local 정보]");
System.out.println("request.getLocalName() = " +
request.getLocalName()); //
System.out.println("request.getLocalAddr() = " +
request.getLocalAddr()); //
System.out.println("request.getLocalPort() = " +
request.getLocalPort()); //
System.out.println("--- 기타 조회 end ---");
System.out.println();
}
'Spring 정리' 카테고리의 다른 글
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 6 (0) | 2021.09.30 |
---|---|
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 5 (0) | 2021.09.27 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 3 (0) | 2021.08.25 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2 (0) | 2021.08.19 |
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 1 (0) | 2021.08.18 |