본문 바로가기
웹 기초

Servlet

by 달보드레. 2020. 5. 19.

 

- 자바를 사용하여 웹을 만들기 위해 필요한 기술
  클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송

[ 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