[Servlet]
- Servlet은 웹프로그래밍에서 클라이언트의 요청을 처리하고 결과를 다시 클라이언트에게 전송하는 JAVA 프로그래밍 기술이다.
- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.httpServlet 클래스를 상속 받는다.
[ Servlet 동작 방식 ]
- Client가 접속하면 HTTP Request를 Servlet Container로 전송한다
- Request를 받은 Servelet Container는 HTTPServletRequest, HttpServeltResponse 두 객체를 생성한다.
- web.xml은 Client가 요청한 URL을 분석하여 어느 서블릿에 대한 Request인지 찾는다
- 해당 서블릿에서 service메소드를 호출한 뒤 클라이언트 요청 방식(Get, Post) 에따라 doGet() 또는 doPost()를 호출한다.
- doGet() ,doPost()는 동적페이지를 생성한 후 HttpServlet.Response 객체에 응답한다.
- 응답이 끝나면 HttpServeltRequest, HttpServletResponse 객체를 소멸한다.
[Servlet URL_Mapping 방식]
1. web.xml 을 이용하는 방법
먼저 프로젝트를 우클릭 한뒤 New - class 를 선택한다
아래와 같이 입력해준다.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Hello_xml extends HttpServlet {
private static final long serialVersionUID = 1L;
public Hello_xml() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter Writer = response.getWriter();
response.setContentType("text/html; charset=UTF-8");
Writer.println("<html>");
Writer.println("<head><title>XML Mapping</title></head>");
Writer.println("<body>");
Writer.println("<h1>XML Mapping<h1>");
Writer.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Eclipse에서 생성한 dynamic project를 우클릭 하고나서 Java EE Tools - Generate Deployment Descriptor Stub 를 선택해준다.
WebContent/WEB-INF/ 아래에 web.xml 이 생성된 것을 볼 수 있다.
web.xml을 아래와 같이 수정해준다
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>Servlet_Web_Pjt</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>
<servlet-name>Hello_xml</servlet-name>
<servlet-class>Hello_xml</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello_xml</servlet-name>
<url-pattern>/hello_xml</url-pattern>
</servlet-mapping>
</web-app>
13 - servlet을 추가하는 부분이다.
14 - Servlet 이름
15 - Servlet class를 설정하는 부분이다 패키지명.클래스 로 입력한다
18 ~ 21 URL을 Mapping 하는 부분이다.
이제 서버를 실행하고 /hello_xml 로 접속해보자.
아래와 같이 URL이 Mapping 된걸 확인 할 수 있다.
2. Annotation을 이용하는 방법
프로젝트 우클릭 new - servlet을 선택해준다
생성된 class를 보면 기본적인 메서드가 생성되어있다
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;
@WebServlet("/Hello_annotation")
public class Hello_annotation extends HttpServlet {
private static final long serialVersionUID = 1L;
public Hello_annotation() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter Writer = response.getWriter();
response.setContentType("text/html; charset=UTF-8");
Writer.println("<html>");
Writer.println("<head><title>Annotation Mapping</title></head>");
Writer.println("<body>");
Writer.println("<h1>Annotation Mapping<h1>");
Writer.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
위의 xml 방식과 다른점은
7 줄과 13번줄의 어노테이션이 추가된 것 뿐이다
@WebServlet("/~") 은 xml Mapping 방식과 동일하게 /~의 url을 Servlet과 매핑시켜준다
웹 서버를 재시작한뒤 확인해보면 아래와 같은 화면이 나온다
'WEB > Servlet' 카테고리의 다른 글
3) Servlet을 이용한 동적 웹 - DB 연동하기, 회원 가입 (0) | 2019.09.20 |
---|---|
2) Servlet을 이용한 동적 웹 - Parameter 추출 하기 (0) | 2019.09.16 |