서블릿(Servlet)
Server + Applet의 합성어로 JAVA 언어를 이용하여 사용자의 요청을 받아 처리하고 그 결과를 다시 사용자에게 전송하는 역할의 Class 파일을 말합니다.
웹에서 동적인 페이지를 java로 구현한 서버 측 프로그램
관련 api문서는 아래 링크에서확인
https://tomcat.apache.org/tomcat-8.5-doc/servletapi/
서블릿 설계 규약
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방식으로많이쓰고 직관적으로 볼수있기에 편할거같습니다 .
대신 매핑명은 겹치면안됩니다절대 그럼 서버가동안됨