HTTP 요청 프로토콜과 관련된 객체
doPost()
메서드를 호출하기 바로 직전에doPost()
메서드doPost()
에게/참조변수 넘겨줌👉 즉, 참조변수를 이용하면? 메모리상의 HttpServletRequest 객체에 접근이 가능해짐
시용자 입력 정보 및 브라우저 정보 등 다양한 정보 활용 가능
LoginServlet.java
System.out.println("-----------------Start Line-----------------");
String method = request.getMethod();
String uri = request.getRequestURI();
String protocol = request.getProtocol();
System.out.println(method + " " + uri + " " + protocol);
System.out.println("-----------------Message Header-------------");
System.out.println("Host : " + request.getHeader("host"));
System.out.println("Connection : " + request.getHeader("connection"));
System.out.println("User-Agent : " + request.getHeader("user-agent"));
System.out.println("Accept : " + request.getHeader("accept"));
System.out.println("Accept-Encoding : " + request.getHeader("accept-encoding"));
System.out.println("Accept-Language : " + request.getHeader("accept-language"));
System.out.println("-----------------Message Body-------------");
System.out.println(request.getParameter("id"));
ServletRequest > HttpServletRequest
HttpServletRequest
, ServletRequest
는 인터페이스
자바의 스펙을 관리하는 오라클이 해당 인터페이스를 만듦
HttpServletRequest
ServletRequest
로부터 상속한 메소드 + 자신이 추가한 메소드를 모두 가짐ServletRequest
로부터 상속받은 메소드메소드 | 기능 |
---|---|
void setAttribute(String name, Object value) | ServletRequest에 데이터를 등록한다. |
Object getAttribute(String name) | ServletRequest에 등록된 데이터를 추출한다. |
Enumeration getAttributeNames() | ServletRequest에 등록된 데이터의 name 목록을 리턴한다. |
void removeAttribute(String name) | ServletRequest에 등록된 데이터를 삭제한다. |
String getCharacterEncoding() | ServletRequest에 설정된 인코딩 정보를 리턴한다. |
void setCharacterEncoding(String encoding) | message-body에 포함된 문자 데이터에 대한 인코딩을 설정한다. |
String getParameter(String name) | 사용자가 입력한 파라미터 중에서 name에 해당하는 파라미터 값을 리턴한다. |
String[] getParameterValues(String name) | 하나의 name을 통해 전달된 여러 개의 값을 배열로 리턴한다. ex. 체크박스 |
Enumeration<String> getParameterNames() | 사용자가 전달한 파라미터들의 name 목록을 리턴한다. |
int getContentLength() | message-body를 통해 전달한 데이터의 크기를 리턴한다. |
String getProtocole() | 요청에 사용한 프로토콜의 이름/버전을 리턴한다. |
String getRemoteAddr() | 요청한 브라우저의 IP 주소를 리턴한다. |
int getServerPort() | 요청을 받은 서버의 포트 번호를 리턴한다. |
ServletContext getServletContext() | 서버가 구동되는 순간 서버에 등록된 웹 애플리케이션 당 하나씩 생성되는 ServletContext 객체를 리턴한다. |
RequestDispatcher getRequestDispatcher(String path) | 브라우저의 요청을 특정 경로(path)로 이동하기 위한 RequestDispatcher 객체를 리턴한다. |
HttpServletRequest
에 추가된 메소드메소드 | 기능 |
---|---|
String getHeader(String headerName) | headerName에 해당하는 헤더 값을 리턴한다. |
Enumeration getHeader(String headerName) | headerName에 해당하는 헤더 값 여러 개를 Enumeration으로 리턴한다. |
Enumeration getHeaderNames() | 헤더 이름 목록을 Enumeration으로 리턴한다. |
Cookie[] getCookies() | 브라우저가 전송한 쿠키 정보를 배열로 리턴한다. |
HttpSession getSession() | 브라우저와 매핑된 세션 객체를 리턴하고, 없으면 새로 생성해서 리턴한다. |
HttpSession getSession(boolean create) | 브라우저와 매핑된 세션이 없을 때 create 설정이 true면 새로운 세션을 생성하여 리턴하고, false면 null을 리턴한다. |
boolean isRequestedSessionValid() | 브라우저와 매핑된 세션이 유효한지 리턴한다. |
String getRequestedSessionId() | 브라우저와 매핑된 세션의 아이디를 리턴한다. |
boolean isRequestedSessionIdFromCookie() | 브라우저와 매핑된 세션의 ID가 쿠키로 전달됐는지 리턴한다. |
boolean isRequestedSessionIdFromURL() | 브라우저와 매핑된 세션의 ID가 요청 URL에 포함되어 전달됐는지 리턴한다. |
StringBuffer getReqeustURL() | 브라우저가 요청한 URL을 리턴한다. |
String getRequestURI() | 브라우저가 요청한 URL에서 URI만 리턴한다. |
String getQueryString() | 요청에서 쿼리 문자열을 리턴한다. |
String getMethod() | 요청 방식을 리턴한다. |
HTTP 응답 프로토콜과 관련된 객체
ServletResponse > HttpServletResponse
서블릿 객체의 service()
메소드의 매개변수로 선언
서블릿 컨테이너가 생성하여 전달
HttpServletRequest
와 유사
메소드 | 기능 |
---|---|
void setContentType(String type) | 응답 메시지의 데이터 형식(MIME TYPE)을 설정한다. 응답에 대한 인코딩 꼭 출력 스트림 얻기 전에 선언해야 함 |
PrintWriter getWriter() | HTTP 응답 프로토콜 message-body와 연결된 출력 스트림을 리턴한다. |
void setBufferSize(int size) | 출력 스트림의 버퍼 크기를 설정한다. |
메소드 | 기능 |
---|---|
void setStatus(int statusCode) | HTTP 응답 상태 코드를 설정한다. |
void addCookie(Cookie cookie) | message-header에 Set-Cookie 헤더 값으로 쿠키(Cookie)를 추가한다. |
void setHeader(String name, String value) | message-header에 name-value 쌍의 헤더를 설정한다. |
void sendRedirect(String path) | 요청한 브라우저가 Path에 해당하는 화면을 다시 요청(Redirect)하도록 지정한다. |
빨간색으로 표시된 메서드는 꼭 기억하고,
볼드처리된 메서드도 자세하게 알아두자