Servlet 동작 흐름
Servlet API
Servlet 배포
<servlet>
과 <servlet-mapping>
한 쌍<servlet>
<description></description>
<display-name>ParameterTest</display-name>
<servlet-name>ParameterTest</servlet-name>
<servlet-class>com.ssafy.basic.ParameterTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ParameterTest</servlet-name>
<url-pattern>/ParameterTest</url-pattern>
</servlet-mapping>
/
로 시작하는 /*
*.
로 시작하는 *.확장자/
/basic
/basic/*.do
@WebServlet
@WebServlet(
name = "helloServlet",
urlPatterns = {"/hello", "*.ssafy"},
loadOnStartup = 1
)
public class HelloServlet extends HttpServlet{
Servlet Life-Cycle
Servlet class는 javaSE에서의 class와는 다르게 main method가 없다. 즉 객체의 생성부터 사용의 주체가 사용자가 아닌 Servlet Container에게 있다.
Client가 요청을 하게 되면 Servlet객체를 생성(한번만)하고, 초기화(한번만) 하며 요청에 대한 처리(요청시마다 반복)를 하게 된다. 또한 Servlet객체가 필요 없게 되면 제거하는 일까지 Container가 담당하게 된다.
Servlet Life-Cycle의 주요 method
method | description |
---|---|
init() | 서블릿이 메모리에 로드될 때 한번 호출 |
doGet() | GET방식으로 data전송 시 호출 |
doPost() | POST방식으로 data전송 시 호출 |
service() | 모든 요청은 service()를 통해서 doXXX()메서드로 이동 |
destroy() | 서블릿이 메모리에서 해제되면 호출 |
GET | POST | |
---|---|---|
특징 | 전송되는 데이터가 URL뒤에 Query String으로 전달. 입력 값이 적은 경우나 데이터가 노출이 되도 문제가 없을 경우 사용. | URL과 별도로 전송. HTTP header 뒤에 body에 입력 스트림 데이터로 전달. |
장점 | 간단한 데이터를 빠르게 전송. form tag뿐만 아니라 직접 URL에 입력하여 전송 가능. | 데이터의 제한이 없다. 최소한의 보안 유지 효과를 볼 수 있다. |
단점 | 데이터 양에 제한이 있다. (location bar(URL + parameter)를 통해 전송할 수 있는 데이터의 사이즈는 2kb로 제한된다.) | 전달 데이터의 양이 같을 경우 GET방식보다 느리다. (전송 패킷을 body에 데이터를 구성해야 하므로) |