Servlet&JSP - mapping

서블릿(Servlet)

Server + Applet의 합성어로 JAVA 언어를 이용하여 사용자의 요청을 받아 처리하고 그 결과를 다시 사용자에게 전송하는 역할의 Class 파일을 말합니다.

웹에서 동적인 페이지를 java로 구현한 서버 측 프로그램

관련 api문서는 아래 링크에서확인

https://tomcat.apache.org/tomcat-8.5-doc/servletapi/

 

Servlet {servlet.spec.version} API Documentation - Apache Tomcat 8.5.69

 

tomcat.apache.org

 

서블릿 설계 규약

1. 모든 서블릿은 javax.servlet.Servlet 인터페이스를 상속 받아 구현

2. 서블릿 구현 시 인터페이스와 ServletConfig 인터페이스를 javax.servlet.GenericServlet에 구현

3. HTTP프로토콜을 사용하는 서블릿은 javax.servlet.http.HttpServlet 클래스는 javax.servlet.GenericServlet을 상속한 클래스로 서블릿은 HttpServlet 클래스를 상속 받음

4.서블릿 Exception 처리를 하기 위해서는 javax.servlet.ServletException을 상속 받아야 함

 

서블릿 동작 구조

클라이언트가 웹서버에 요청하면 웹서는 서블릿으로 요청함 그리고 요청받은 질문을 

서블릿은 웹서버로 응답함 응답받은 웹서버는 다시 클라이언트로 최종 응답해줌

클라이언트 > 웹서버 > 서블릿 / 요청

서블릿 > 웹서버 > 클라이언트 / 응답

 

서블릿 매핑

클라이언트가 servlet에 접근할 때 원본 클래스 명이 아닌 다른 명칭으로 접근 시 사용

설정 방법은 web.xml과 @annotaion을 이용하는 방법이 있음

 

우선 servlet 파일 생성

 

 

1. 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" id="WebApp_ID" version="3.1">
  <display-name>momory</display-name>
  <!-- 
  	welcome-file-list 태그는 서버에
  	localhost:포트번호/프로젝트이름 <<의 형식으로 웹서버에 요청하면 
  	어떤파일먼저 보여줄것인지 설정하는 태그입니다.
  	만약 index.html이 없다면 index.htm 순으로 확인합니다.
  	-->
  <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>
  
  <!-- web.xml 매핑 방법 -->
  <servlet>
	<!-- servlet-name : servlet-name은 같아야한다. 그래야 연결되는부분   -->
  	<servlet-name>test</servlet-name> 
  	<!-- servlet-class 어느클래스를 맵핑할것인지 설정 패키지명까지 써줘야함 -->
  	<servlet-class>test.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<!-- servlet-name : servlet-name은 같아야한다. 그래야 연결되는부분   -->
  	<servlet-name>test</servlet-name>
  	<!-- 요청명을 뭐라고할것인지 -->
  	<url-pattern>/test</url-pattern>
  </servlet-mapping>
  
</web-app>

서버 재가동후 /test로 요청해보면 아래와같이 나온다.

 

@annotation 매핑

web.xml의 매핑을 주석처리한다.

그리고 서블릿으로 이동해

@WebServlet("/test") 로 수정한다

이러면 매핑끝!

다시 서버재가동후 확인

 

 

만약 실무에서는 저 두개의방법중 2번째 방법을 많이쓴다고 합니다.

1번째는 web.xml에 설정할 옵션도많은데 매핑까지작업하면 코드가 길어지기때문에 대부분 annotation방식으로많이쓰고 직관적으로 볼수있기에 편할거같습니다 .

대신 매핑명은 겹치면안됩니다절대 그럼 서버가동안됨

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유