티스토리 뷰
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파일을 이용해 매핑을 하는 경우가 많았지만 요즘은 어노테이션을 이용해 매핑을 하는 경우가 더 늘어나는 추세라고 합니다.
하지만 공부하는 입장에서는 둘 다 일단 알아야겠죠 ~
'JSP&Servlet' 카테고리의 다른 글
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 |
- Total
- Today
- Yesterday
- 파이썬 for Beginner 솔루션
- jsp
- 쉽게 배우는 운영체제
- 스프링 테스트
- 파이썬 for Beginner 연습문제
- 쉘 코드
- Spring
- 방명록 프로젝트
- JPA
- spring mvc
- Python Cookbook
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 스프링 mvc
- 김영환
- 선형 회귀
- Computer_Networking_A_Top-Down_Approach
- Thymeleaf
- 스프링 컨테이너
- git
- git merge
- 프로그래머스
- 스프링
- git branch
- Gradle
- 지옥에서 온 git
- 패킷 스위칭
- Spring Data JPA
- Spring Boot
- 생활코딩 javascript
- 운영체제 반효경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |