(2022) 공부 (Study)

🔥 JSP 기본 정리 - #5 Servlet Mapping

수낭 2021. 1. 4. 12:20

이번 포스팅은 Servlet 외부에서 요청하기 쉽도록 
특정 문자를 이용해서 맵핑하는 방법에 대해서 입니다.


🔑 목차

🎉 1. Servlet Mapping 이란?

🎉 2. Web.xml 파일을 통한 Mapping (고전 방법)

🎉 3. Java Annotation을 통한 Mapping (최신 방법)


 이전 파트에서 알아보았듯이 
JSP 만으로 웹 프로그램을 만들 수 있고,
Servlet 만으로 웹 프로그램을 만들 수 있고,
둘을
모두 사용해서 만들 수도 있다. (권장 방법)

 View와 같은 부분은 JSP를 사용해서 만들고,
Controller, model과 같은 부분들은 Servlet을 사용해서 만든다.

 

🚩 1. Servlet Mapping 이란?

 Servlet Web container에 넣어놓고, 브라우저를 통해서 해당하는 요청이 들어오게 되면,
다양한 servlet들 중에서
어떠한 servlet을 요청하는 것인지 알 필요가 있기 때문에,
servlet에는 이름이 필요하게 된다. (고유한 이름)

servlet을 구분하는 데에 full path 이름의 경우 보안이 취약하고, URL이 복잡하다.
그래서 생겨난 것path를 줄여서 맵핑하는 방법, , servlet 맵핑이다.

맵핑을 하게 되면, Context Path까지는 그대로 써준다.
그 뒤, servlet 이하간략하게 한 단어(닉네임)으로 표현한다.

Servlet Mapping을 하는 방법에는, 2가지가 있다.
 1. web.xml 파일을 이용한 맵핑 (고전적인 방법)
 2. Java Annotation
을 이용한 맵핑 (현대적인 방법)

 

🚩 2. Web.xml 파일을 통한 Mapping (고전)

우선 Dynamic Web Project를 생성해준다. (전에 설명)

 여기서 주의할 점은 전에 설명했듯이,
web.xml
파일을 조작하기 위해서는,
위 사진의
Generate web.xml deployment descriptor
옵션체크해주어야 한다.
(
자동으로 web.xml 파일을생성 해주는 옵션)

'


 
전에 설명했듯이, Java Resource를 우클릭하고, new->Servlet을 생성하면 된다.
(Java Resource
src 폴더 내부에 servlet 파일이 생긴다.)

 생성된 servlet 파일을 열어보면, 아까 설정한 servlet 이름이 그대로 적용되어 있다.

 그 뒤에, 전에 했던 것처럼,
반겨주는 메세지를 작성해보자.
(
안해도 된다.)


 
web.xml에 가보면, default 설정이 되어있다.



 
servlet을 등록하기 위해서는, web-app 태그 사이작성하면 된다.

 

< Code Explanation >

<servlet>
  <servlet-name> servletEx </servlet-name>	
  # servlet의 이름은 무엇으로 할 건지 (가명) -> 서블렛 이름
  <servlet-class> com.servlet.ServletEx </servlet-class> 
  # servlet의 package명을 포함한, full-name
</servlet>

<servlet-mapping>
  <servlet-name> servletEx </servlet-name>
  # servlet의 이름은 무엇으로 할 건지 (가명) -> 어떤 서블렛 이름을 가진
  <url-pattern> /SE <url-pattern>
  # servletEx라는 가명을 가진 servlet의 package명을 포함한 full-name을
    /SE로 mapping 하겠다는 뜻
</servlet-mapping>

 즉, "/SE" 라고 호출하면, mapping되어있는 "com.servlet.ServletEx"실행시키라는 명령을 갖는 구조이다.

 

🚩 3. Java Annotation을 통한 Mapping (현대)

 servlet.java 파일의 @webServlet(  )괄호 안에 작성하면 된다.

위와 같이, /SE7 이라고 작성하게 되면,

 web.xmlservlet maaping에 의한 SE / annotation에 의한 SE7 모두 등록되어,
주소창을 보면,
SESE7 모두 사용 가능하다.

 

🚨 slash (“/”)를 빼먹으면, 서버 접속 자체가 에러난다! (주의)

 

이상으로 포스팅을 마칩니다.