
- 자바를 사용하여 웹을 만들기 위해 필요한 기술
클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송
[ Servlet 특징 ]
- 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
- html을 사용하여 요청에 응답한다.
- Java Thread를 이용하여 동작한다.
- MVC 패턴에서 Controller로 이용된다.
- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.
UDP보다 속도가 느리다.
- HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.

1. 사용자(Client)가 URL을 클릭하면 HTTP Request를 Servlet Container로 전송합니다.
2. HTTP Request를 전송받은 Servlet Container는 HttpServletRequest,
HttpServletResponse 두 객체를 생성합니다.
3. web.xml은사용자가 요청한 URL을 분석하여 어느 서블릿에 대해 요청을 한 것인지 찾습니다.
4. 해당 서블릿에서 service메소드를 호출한 후 클리아언트의 POST, GET여부에 따라 doGet() 또는
doPost()를 호출합니다.
5. doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냅니다.
6.응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.
* 서블릿 인스턴스는 하나만 생성되어 웹 어플리케이션이 종료될 때까지 사용된다
따라서 인스턴스 변수에 특정 사용자를 위한 데이터를 보관해서는 안 된다.
또한 클라이언트가 보낸 데이터를 일시적으로보관하기 위해 서블릿의 인스턴스 변수를 사용해서도 안된다
[Servlet Container]
- 서블릿을 관리해주는 것
클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓을 만들어 통신
ex) Apache tomcat
- GET
URL에 변수(데이터)를 포함시켜 요청한다.
데이터를 Header(헤더)에 포함하여 전송한다.
URL에 데이터가 노출되어 보안에 취약하다.
전송하는 길이에 제한이 있다.
캐싱할 수 있다.
- POST
URL에 변수(데이터)를 노출하지 않고 요청한다.
데이터를 Body(바디)에 포함시킨다.
URL에 데이터가 노출되지 않아서 기본 보안은 되어있다.
전송하는 길이에 제한이 없다.
캐싱할 수 없다.
- @Webservlet 어노테이션 : Servlet 3.0부터는 서블릿 배치 정보를 설정 할 수 있다
@Webservlet 어노테이션을 사용하면 서블릿 배치정보를 작성 할 수 있음
ex)
@WebServlet("/SampleName")
public class SampleNameServlet extends GenericServlet {
.......
}
> 서블릿의 URL정보는 @WebServlet 괄호안에 넣는다
(web.xml)
<!-- 서블릿 선언 -->
<servlet>
<servlet-name>SampleServlet</servlet-name>
<servlet-class>패키지명.SampleNameServlet</servlet-class>
</servlet>
<!-- 서블릿 URL과 연결-->
<servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/SampleName</url-pattern>
</servlet-mapping>
* 주요 속성
# name : 서블릿의 이름을 설정하는 속성
ex) @WebServlet (name = "서블릿 이름")
# urlPatterns : 서블릿의 URL 목록을 설정하는 속성, 속성값으로 String 배열이 옴
ex)
1. 서블릿에 한 개의 URL을 설정하는 경우 @WebServlet(urlPatterns ="/EX" ) or WebServlet(urlPatterns = { "EX" } )
일반적인 문자열 배열표기
2. 서블릿에 여러 개의 URL을 설정하는 경우 WebServlet(urlPatterns = { "/EX" , "EX.do" , "Ex.action" } )
# value : urlPatterns과 같은 용도 , 생략 가능 다만 value외의 속성도 같이 사용한다면 생략 불가
ex)
@WebServlet(value="/EX" ) or @WebServlet("/EX" ) > 생략 가능
@WebServlet(value="/EX", name = "ExName") > 생략 불가
웹 서버가 실행시키는 프로그램을 웹 애플리케이션이라고 한다
웹 서버와 웹 애플리케이션 사이에는 데이터를 주고받기 위한 규칙이 있다 이것을 CGI(Common Gateway Interface)라고 부른다
보통 웹 애플리케이션을 CGI 프로그램이라고도 부른다
특히 자바로 만든 웹 애플리케이션을 서블릿이라고 부르는데,
서블릿은 클라이언트에게 서비스를 제공하는 작은 단위의 서버 프로그램이라는 뜻
'웹 기초' 카테고리의 다른 글
Header , Gradle (0) | 2020.05.20 |
---|---|
Java Bean (0) | 2020.05.20 |
Servlet mapping? (0) | 2020.05.19 |
Servlet Request,Response (0) | 2020.05.19 |
WAS 와 웹서버의 차이점 (0) | 2020.05.19 |