Servlet Mapping이란 특정 servlet을 요청할 때, 전체 경로를 url에 써주면, 너무 복잡하고 보안에도 취약하기 때문에, 간단하게 경로를 표현해주는 것이다.
servlet 매핑 방법은 두 가지가 있다.
1. xml 이용
2. annotaion 이용
xml을 이용하여, servlet mapping을 해주기 위해서는 web.xml파일에서 servlet mapping을 해주어야한다.
<실습>
servlet을 하나 생성한다.(annotation을 사용하지 않기 위해 생성시 Create Java EE 6 annotated class 의 체크박스는 해제한다.)
제대로 mapping이 되는 지 확인하기 위해, PrintWriter를 추가하여 간단한 문장을 적어준다.
xml을 이용할 땐 web.xml에서 해주어야한다.
기본적으로 IntelliJ에서 Create Java EE 6 annotated class 의 체크박스를 해제 한 채로 Servlet생성을 하면, 아래와 같이 <servlet></servlet>
정의가 자동적으로 들어가있다.
<servlet-name></servlet-name>
은 이 servlet의 별칭이기 때문에 임의로 바꿔주어도 된다.
<servlet-class></servlet-class>
는 이 servlet의 저장위치이다.
servlet mapping을 해주려면, <servlet></servlet>
아래에 <servlet-mapping></servlet-mapping>
을 추가해준다.
<servlet-name></servlet-name>
은 위의 <servlet></servlet>
의 <servlet-name></servlet-name>
과 같은 값이 들어가야한다.
<url-pattern></url-pattern>
은 해당 servlet의 경로를 간단히 나타내주는 것이다. 이 값을 브라우저 url 뒤에 추가해주는 것이다.
서버를 실행시키고 servlet mapping 해준 값을 적어주면 제대로 출력됨을 볼 수 있다.
annotation을 이용한 servlet mapping은 훨씬 간단하다. 아까 만들어 준, servlet위에 @WebServlet("/간단한경로값")
annotation을 추가해준다.
서버를 실행시키면 제대로 출력됨을 볼 수 있다.
*하나의 servlet이라도, 여러개의 servlet mapping을 할 수 있다.(ex 위의 예시에서 /SE
, /SE1
두 경로 모두 하나의 servlet의 실행결과이다.)