티스토리 뷰

Spring&Spring Boot/JSP

Servlet Mapping

on1ystar 2019. 1. 11. 22:38
728x90
반응형
본 글의 목적은 제가 공부한 내용을 바탕으로 정리하면서 저와 같이 공부하시는 분 들을 위함입니다. 때문에 부족한 부분이 있을 수 있고, 잘못된 부분이 있을 수 있습니다. 만약 있을 경우, 생각을 고칠 수 있도록 저에게 알려주시면 정말 감사하겠습니다 !!



Servlet Mapping ?


서블릿 매핑이란 서블릿의 URL주소를 보다 쉽고 간결하게 표시하기 위해 다른 이름(?)을 붙여주는 것입니다.

full path : http://localhost:8090/FirstTest/.../com.test.bnzn.HelloServlet

이 URL을 보면 http:// 는 http 프로토콜을 나타내고, localhost는 서버의 주소, :8090은 포트번호 입니다. 

그 다음 FirstTest가 루트 컨텍스트로 저번 시간에 만든 프로젝트 이름입니다. 저번 포스팅에서 알아봤던 내용입니다.

그다음 /... 으로 다른 디렉토리들이 나올 수 있고 마지막에는 com.test.bnzn.HelloServlet이 오게 됩니다.

com.test.bnzn은 패키지 이름이겠죠 ? HelloServlet은 클래스 이름 즉, 서블릿 이름입니다. 이렇게 모든 경로를 나타낸 path를 full path라고 합니다.

실제로 만든 웹 페이지를 들어가려면 full path를 주소창에 입력해야 합니다. 하지만 그 동안 프로젝트(루트 컨텍스트)뒤에 파일 이름만 적어 줘도 웹 페이지를 잘 띄울 수 있었습니다. 이는 사전에 Mapping이 되어 있었기 때문입니다.

예를 들어서 위의 경로는 보통

Mapping path : http://localhost:8090/FirstTest/HelloServlet     or     http://localhost:8090/FirstTest/HS

.../패키지명+파일명 = 원하는 Mapping 이름 식으로 간단하게 Mapping할 수 있습니다.

Mapping을 하는 이유는 보이는 바와 같이 일단 주소가 간결해집니다. 클라이언트 입장에서 full path를 이용해 웹 페이지에 접속하는 것은 매우매우 힘든 작업이 아닐 수 없습니다. 물론 개발자 입장에서도 수 많은 웹 컨테이너 속 서블릿들을 더 효율적으로 관리할 수 있겠죠?

그리고 보안상에 있어서도 더 안전합니다. full path에는 해당 파일이 어느 경로에 있고 패키지 명까지 다 노출시키므로 악의적인 사용자에게 큰 취약점이 될 수 있습니다.


Case 1 ) web.xml 파일 이용


 이 파일은 쉽게 말해서 웹 프로그램 환경설정 파일인데요, JSP파일을 만들 때 일단 체크를 했었습니다.(파일 만드는 법은 JSP 개요 참고)

Generate web.xml deployment descriptor를 저렇게 체크해주면 web.xml 파일을 자동으로 만들어 줍니다.

보시면 WebContent - WEB-INF - lib 에 web.xml 파일이 있습니다.  이 파일을 더블클릭 하면 미리 작성되어 있는 소스코드들이 있습니다. 거거에 빨간색으로 네모친 부분을 삽입해 주면 됩니다.

처음 <servlet-name>Mapping</servlet-name> 은 servlet에 가명을 붙여주는 겁니다. 어떤 서블릿에 가명을 붙여 주는지는 <servlet-class>com.bnzn.Mapping</servlet-class>에 패키지+클래스 네임(서블릿 네임)을 작성해 주면 이 서블릿에 가명을 붙여주는 겁니다.

이제 <servlet-name>Mapping</servlet-name>에 Mapping할 서블릿 가명을 넣어주고,

<url-pattern>/MP</url-pattern> 이렇게 원하는 주소를 적어 줍니다. 그럼 Mapping이 끝납니다 !

한 번 Mapping한 주소로 열어 볼까요?

Case 2 ) Java Annotation 이용


자바 어노테이션이란 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다.(위키백과)

자바에서 제공하는 문법인데, 자바 공부를 중간까지 하고 병행하고 있어서 추상적으로 밖에 이해가 가질 않네요...(이번 달 까지 게시판을 만들겠다는 목적이어서 잠시 멈춰놓은 상태라 추후에 Java공부 포스팅을 할 때 자세히 공부해볼게요. 도중에 필요하다 싶으면 따로 공부하고 포스팅하겠습니다 !)

이 어노테이션을 이용해 매핑을 할 수 가 있는데요, 사실 저희가 만든 소스코드에 이미 매핑되고 작성되어 있습니다.

@WebServlet("원하고자 하는 Mapping 문자열")식으로 Mapping이 가능 합니다.

저 코드는 갑자기 왜 마음데로 삽입되어 있는건지 의문이 들겠죠?

사실 서블릿이나 jsp파일을 만들 때 그냥 Finish를 누르지 않고 Next를 눌러보면

이렇게 eclipse가 클래스 네임으로 알아서 mapping을 해 놓습니다.

따라서 이 부분에 원하는 mapping주소를 넣어도 되고, 소스코드에서 수정을 해도 됩니다.

딱 보기에도 어노테이션을 이용한 URL Mapping이 더 간단해 보입니다. 예전에는 web.xml파일을 이용해 매핑을 하는 경우가 많았지만 요즘은 어노테이션을 이용해 매핑을 하는 경우가 더 늘어나는 추세라고 합니다.

하지만 공부하는 입장에서는 둘 다 일단 알아야겠죠 ~

728x90
반응형

'Spring&Spring Boot > JSP' 카테고리의 다른 글

Servlet Lifecycle  (0) 2019.01.18
HttpServlet  (2) 2019.01.17
JSP와 Servlet 비교  (1) 2019.01.11
Servlet 개요  (0) 2019.01.11
JSP 개요  (0) 2019.01.10
댓글