Servlet API
javax.servlet 와 javax.servlet.http 패키지: 서블릿 API를 위한 인터페이스와 클래스
javax.servlet package
서블릿이나 웹 컨테이너에서 이용되는 클래스와 인터페이스 포함
- 인터페이스
- Servlet
- ServletRequest
- ServletResponse
- RequestDispatcher
- ServletConfig
- ServletContext
- SingleThreadModel
- Filter
- FilterConfig
- FilterChain
- ServletRequestListener
- ServletRequestAttributeListener
- ServletContextListener
- ServletContextAttributeListener
- 클래스
- GenericServlet
- ServletInputStream
- ServletOutputStream
- ServletRequestWrapper
- ServletResponseWrapper
- ServletRequestEvent
- ServletContextEvent
- ServletRequestAttributeEvent
- ServletContextAttributeEvent
- ServletException
- UnavailableException
The javax.servlet.http package :
http request만을 위한 클래스와 인터페이스 포함
- 인터페이스
- HttpServletRequest
- HttpServletResponse
- HttpSession
- HttpSessionListener
- HttpSessionAttributeListener
- HttpSessionBindingListener
- HttpSessionActivationListener
- HttpSessionContext (deprecated now
- 클래스
- HttpServlet
- Cookie
- HttpServletRequestWrapper
- HttpServletResponseWrapper
- HttpSessionEvent
- HttpSessionBindingEvent
- HttpUtils (deprecated now)
HTTPServlet 클래스
- GenericServlet을 상속받은 Servlet
- HTTP Protocol 지원하는 Servlet
public void service (ServletRequest req,ServletResponse res) |
request, response 객체를 http 형으로 변환하여 service 메소드로 전송 |
protected void service (HttpServletRequest req, HttpServletResponse res) |
service메소드로부터 request를 전달받은 후, request를 doXXX()메소드로 전달함 doXXX메소드는 전달받은 http request의 타입에 따라 결정됨 |
protected void doGet (HttpServletRequest req, HttpServletResponse res) |
GET 요청을 처리하는 메소드 web container에 의해 동작 |
protected void doPost (HttpServletRequest req, HttpServletResponse res) |
POST 요청을 처리하는 메소드 web container에 의해 동작 |
protected void doHead (HttpServletRequest req, HttpServletResponse res) |
HEAD 요청을 처리하는 메소드 web container에 의해 동작 |
protected void doOptions (HttpServletRequest req, HttpServletResponse res) |
OPTION 요청을 처리하는 메소드 web container에 의해 동작 |
protected void doPut (HttpServletRequest req, HttpServletResponse res) |
PUT 요청을 처리하는 메소드 web container에 의해 동작 |
protected void doTrace (HttpServletRequest req, HttpServletResponse res) |
Trace 요청을 처리하는 메소드 web container에 의해 동작 |
protected void doDelete (HttpServletRequest req, HttpServletResponse res) |
DELETE 요청을 처리하는 메소드 web container에 의해 동작 |
protected long getLastModified (HttpServletRequest req) |
HttpServletRequest 가 마지막으로 수정된 시간을 반환 (1970년 1월 1일 자정부터 카운트) |
JSP/Servlet 의 주요 내장객체와 메소드
내장 객체 | 리턴 타입(Return Type) | 설명 |
request | javax.servlet.http.HttpServletRequest | 웹 브라우저의 요청 정보를 저장하고 있는 객체 요청이 발생할 때 만들어짐 해당 request를 포워딩한 응답jsp에서만 쓸 수 있음 요청페이지부터 응답페이지 까지에서만 쓸 수 있음 (parameter, attribute 속성) |
response | javax.servlet.http.HttpServletResponse | 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 |
out | javax.servlet.jsp.jsp.jspWriter | JSP 페이지에 출력할 내용을 가지고 있는 출력 스트림 객체이다. |
session | javax.servlet.http.HttpSession | 하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체 (웹브라우저 별/ 클라이언트별로 만들어짐) 모든 jsp와 servlet에서 꺼내쓸 수 있음. 단, 내가 직접적으로 session객체에 담은 값을 지우기 전까지 - 클라이언트별로 만들어지는 객체 - 새로운 요청이 있어도 Session객체에 속성들은 그대로 유지된다. - attribute가 있음 |
application | javax.servlet.ServletContext | 웹 어플리케이션 Context의 정보를 저장하고 있는 객체 웹 어플리케이션 전역에서 언제나 꺼내쓸 수 있음(자바클래스에서 쓸 수 있음) LifeScope가 가장 김 parameter, attribute |
pageContext | javax.servlet.jsp.PageContext | JSP 페이지에 대한 정보를 저장하고 있는 객체 LifeScope가 가장 짧음 attribute - out / request / response / session 정보 얻는게 가능 ex) pageContext.getOut(); pageContext.getRequest(); pageContext.getSession(); |
page | java.lang.Object | JSP 페이지를 구현한 자바 클래스 객체 담은 값을 해당 jsp 내에서만 쓸 수 있음 (화면이 넘어가면 담은값은 소멸) |
config | javax.servlet.ServletConfig | JSP 페이지에 대한 설정 정보를 저장하고 있는 객체 |
exception | java.lang.Throwable | JSP 페이지서 예외가 발생한 경우에 사용되는 객체 |
HttpServletRequest 객체와 HttpServletResponse 객체
내장 객체 | 리턴 타입(Return Type) | 설명 |
request | javax.servlet.http.HttpServletRequest | 웹 브라우저의 요청 정보를 저장하고 있는 객체 요청이 발생할 때 만들어짐 해당 request를 포워딩한 응답jsp에서만 쓸 수 있음 요청페이지~응답페이지까지 유효 (parameter, attribute 속성) |
response | javax.servlet.http.HttpServletResponse | 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 |
HttpServletRequest 객체의 메소드
메서드
|
리턴 타입
|
설명
|
getRemoteAddr() |
Sring
|
서버에 연결한 클라이언트의 IP 리턴 보안이 필요한 웹 어플리케이션인 경우 IP를 검사하거나 접근 기록을 남기는데에 사용 가능 |
getProtocol()
|
String
|
클라이언트가 요청한 프로토콜 리턴 |
getCharacterEncoding() |
String
|
클라이언트가 전송한 http 요청 정보 인코딩에 사용된 캐릭터 set 리턴
|
getContentType() |
String
|
클라이언트가 전송한 http 요청 정보 콘텐츠 타입 리턴
클라이언트가 전송한 http 요청 메세지의 Content-Type 헤더 값
|
getContentLength()
|
long
|
클라이언트가 전송한 http 요청 정보의
정보의 길이를 구할 수 없는 경우에는 -1을 리턴 |
getMethod() |
String
|
클라이언트가 요청한 HTTP Method
|
getServerName()
|
String
|
클라이언트가 연결할 때 사용한 서버 이름
|
getRequestURI() |
String
|
클라이언트가 요청한 URL에서 경로
|
getServerPort() |
int
|
서버가 사용중인 포트 번호
|
getContextPath() |
String
|
JSP 페이지가 속한 웹 어플리케이션의 컨텍스트 경로
|
setCharacterEncoding(String charset)
|
void |
클라이언트의 요청 정보를 디코딩할 때 사용할 캐릭터셋 설정
getParameter()와 같은 파라미터 정보를 얻어오는 메서드 사용 전에 설정해야 적용가능
GET방식의 경우 서버 설정을 통해 인코딩설정을 변경해주어야 함 |
Parameter 관련
getParameterNames() | java.util.Enumeration | 모든 파라미터명을 반환 |
getParameter(String name) | String | 파라미터명으로 파라미터 값을 반환 |
getParameterValues(String name) | String[] | 파라미터명으로 파라미터 값을 반환 (해당 파라미터명과 매핑된 값이 여러개일 때) |
주요 정보
getRequestURL() | 요청 해당 URL을 리턴한다. |
getRequestURI() | URL에서 스키마, 서버이름, 포트번호를 제외한 나머지 주소와 파라미터 |
getScheme() | http, https, ftp와 같은 프로토콜 |
getServerName() | 서버 이름 |
getServerPort() | 서버 포트 |
getContextPath() | JSP 페이지가 속한 웹어플리케이션의 컨텍스트 패스를 리턴 |
getMethod() | GET/POST 등의 HTTP 메소드 요청방식이 GET 방식인지 POST 방식인지 알려줌 |
isSecure() | SSL 보안 여부. https와 같은 보안 채널의 사용 여부 true/false |
getLocale() | 지역 정보 |
getProtocol() | 사용하는 프로토콜. 프로토콜/메이저버전.마이너버전 |
getCookies() | 모든 쿠키 값을 반환한다. |
Header 정보
getHeaderNames() | java.util.Enumeration | 모든 헤더 명을 반환한다. |
getHeader("user-agent") | Mozilla/5.0 .... | 헤더명으로 헤더 값을 반환한다. |
HttpServletResponse 객체의 메소드
void addCookie(Cookie cookie) | 인자값으로 주어진 쿠키를 응답정보의 헤더에 추가한다. 쿠키는 응답정보의 Set-Cookie 헤더의 값으로 추가되어 클라이언트로 전송 |
String encodeRedirectURL(String url) | 클라이언트와 서버 간 세션이 유지되는 상태에서 브라우저 쿠키를 지원하지 않을 때 주어진 URL 뒤에 세션 아이디를 추가하고 인코딩하여 요청을 재전송 |
String encodeURL(String url) | 주어진 URL에 세션 아이디를 추가하여 인코딩해서 반환 |
void sendRedirect(String location) | 응답을 클라이언트가 요청한 URL이 아니라 sendRedirect()에 주어진 URL로 재전송한다. 매개변수 location은 절대 URL이나 상대 URL로 지정 서버의 특정 자원이 다른 URL로 이동할 때 사용할 수 있는 메소드 |
public void setDateHeader(String name, long date) | 날짜를 밀리 초로 변환하여 주어진 이름과 날짜를 응답정보 헤더에 설정 |
public void setHeader(String name, String value) | 응답정보의 헤더에 주어진 이름과 값을 설정 |
public void setIntHeader(String name, int value) | 주어진 이름과 정수값을 갖도록 응답정보 헤더에 추가 |
public void setStatus(int sc) | 응답으로 전송될 HTTP 응답에 대한 상태코드 |
References
https://www.devkuma.com/docs/jsp-servlet/httpservletrequest-%EB%A9%94%EC%86%8C%EB%93%9C/
https://www.javatpoint.com/servlet-api
https://www.tutorialspoint.com/servlets/servlets-client-request.htm
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
https://www.hscripts.com/tutorials/jsp/variables.php
'Web Programming' 카테고리의 다른 글
비동기통신 - AJAX와 JSON, 그리고 GSON (0) | 2023.03.16 |
---|---|
[Web] GET방식과 POST방식의 특징 및 차이점 (0) | 2023.03.15 |
Servlet과 JSP / 비교 / 차이점 (0) | 2022.12.14 |
[AJAX] AJAX란 / jQuery-AJAX 사용법 / AJAX 메소드 (0) | 2022.11.21 |
Web Server vs WAS / Web Server와 WAS의 차이 (0) | 2022.11.10 |