Servlet(인터페이스)
: init(),destroy(),getServletConfig(),service(,)
ServletConfing(인터페이스)
: getInitParameter(String name),getServletContext()
|
|
GenericServlet (추상 클래스)
: service(,)
init(), destroy()
getServletConfig()
getServletContext()
getInitParameter(String name)
|
HttpServlet (추상 클래스)
: doGet(HttpServletRequest req, HttpServletResponse resp)
doPost(HttpServletRequest req, HttpServletResponse resp)
doPut(,), doDelete(,)
service(,)
init(), destroy()
getServletConfig()
getServletContext()
getInitParameter(String name)
|
(상속)
|
MyServlet (우리가 만들 서블릿)
=> extends HttpServlet을 하면 웹브라우저의 요청을 처리할 수 있는 클래스가 된다
요청 (url입력,링크클릭,새로고침,버튼클릭,submit)
웹브라우저 -------------------------> 서버
get 요청 ----------> 서블릿이 doGet요청 처리
post 요청 ----------> 서블릿이 doPost요청 처리
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/xxx3</url-pattern>
</servlet-mapping>
: 웹 브라우저에 서 볼 수 있도록 html 작성
response.addCookie(Cookie cookie) : 쿠키 저장할 때 사용
response.addHeader(String name, String value) : 응답 헤더에 헤더값을 추가할 때
response.getHeader(String name) : 응답 헤더값 얻어오기
response.getStatus() : 응답에 대한 status 값
response.sendRedirect(String location) : 서블릿에서 JSP로 위임할 때 사용
response.setContentType(String type) : 웹 브라우저에게 처리할 데이터의 종류를 알려주는 기능. MIME 타입
예> text/plain
text/html
application/json
PrintWriter out = response.getWriter();
out.print(값): // 이 값이 웹 브라우저에 출력됨
cf) 헤더 정보 (header)
요청 (요청 헤더가 전달)
method:get
Accept:text/html;~~
Accept-Language:ko-kr,~~
User_Agent:Mozilla~
웹브라우저 ------------------------------> 서버
<------------------------------
응답 (응답 헤더가 전달)
Content-Type:text/html; charset=utf-8
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.print("html 코드");
==> 서블릿에서하는 응답처리는 쉽지 않음. 실제로는 서블릿에서 응답 처리 X
대신 JSP에 위임해서 응답 처리를 한다
서버
웹브라우저 ------------------> 서블릿
|
| 위임 (2가지 방법)
- response.sendRedirect(String location)
- request.getRequestDispatcher(String path)
<------------------ jsp
: 웹 브라우저에서 요청했을 때 서블릿에서 처리하는 작업 의미
예> 사용자 입력 데이터 얻기, 한글 처리
request.getContextPath() : 요청 URL에서 context명 얻을 때
request.getCookies() : 쿠키를 배열로 반환. Cookie[]
request.getHeader(String name) : 요청 헤더값 얻어오기
request.getQueryString() : 요청 URL에서 ? name=value&name=value
request.getSession() : 세션 얻을 때 사용. 매우 중요 !!! (로그인할 때)
request.setAttribute(key, value) : key/value 쌍으로 데이터 저장할 때 사용
request.getAttribute(key) : key 이용해서 value 얻을 때
request.setCharacterEncoding(String env) : "utf-8" 지정해서 한글 처리 가능
// 다음 4개이 메서드로 사용자 입력 데이터를 얻을 수 있다
request.getParameter(String name)
-> 무조건 String으로 반환됨
-> 일치하지 않는 name을 지정하면 null을 반환한다
-> GET 방식으로 요청했을 때, 한글 처리가 잘 된다
-> POST 방식으로 요청시, 한글이 깨짐 (request.setCharacterEncoding("utf-8")) 이용하기)
request.getParameterNames()
request.getParameterValues(String name)
request.getParameterMap()
request.getRequestDispatcher(String path): 서블릿에서 JSP로 위임할 때 사용
클라이언트의 method="get | post"와 서블릿의 doGet | doPost 가 일치하지 않는 경우에 발생됨