Servlet 이란?
- JAVA 웹 어플리 케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할
- WAS에 동작하는 JAVA클래스
- HttpServlet 클래스를 상속받아야 함
<예시 코드>
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TenServlet
*/
@WebServlet("/test")
public class TenServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TenServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// response로 들어올 자료형을 미리 알려줌
response.setContentType("text/html;charset=utf-8");
//PrintWriter 객체를 response.getWriter()를 통해 생성하여 화면에 출력 할 객체를 생성한다.
PrintWriter out = response.getWriter();
out.print("<h1> test h1>");
out.close();
}
}
위의 코드에서 @WebServlet("/test") 이 부분에서 /test 는 클래스명 뒤에 오게 될 주소명이된다.
위와 같은 경우에는 "localhost:8080/클래스명/test" 가 주소가 된다.
버전에 따른 Servlet 작성 방법
1. Servlet 3.0 spec 이상에서 사용하는 방법
- web.xml 파일을 사용하지 않습니다.
- 자바 어노테이션(annotation)을 사용합니다.
- 앞에서 실습했던 first web에서 사용합니다.
2. Servlet 3.0 spec미만에서 사용하는 방법
- servlet을 등록할 때 web.xml 파일에 등록합니다.
<2.5버전에서 web.xml 코드>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>exam25</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>TenServlet</display-name>
<servlet-name>TenServlet</servlet-name>
<servlet-class>exam.TenServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TenServlet</servlet-name>
<url-pattern>/ten</url-pattern>
</servlet-mapping>
</web-app>
생명주기
- WAS 는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인합니다.
- if(메모리에 없음){
- 해당 서블릿 클래스를 메모리에 올림
- init() 메소드를 실행
}
- service()메소드를 실행
- WAS가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 경우 destroy() 메소드가 실행 됩니다.
- Service(request, response) 메소드가 없어도 doGet, doPost 가 가능한 이유는 HttpServlet 의 service 메소드를 상속받아서 실행하기 때문입니다.
- Service 메소드
- 클라이언트의 요청이 GET일 경우에는 자신이 가지고 있는 doGet(request, response)메소드를 호출
- 클라이언트의 요청이 Post일 경우네는 자신이 가지고 있는 doPost(request, response)메소드를 호출
'Study > Java&Spring' 카테고리의 다른 글
어노테이션(Annotation) (0) | 2021.06.28 |
---|---|
Maven plug in error (0) | 2021.06.24 |
Scope (0) | 2021.06.17 |
JSP (0) | 2021.06.17 |
Request, Response (0) | 2021.06.17 |