Day49 - [JSP]URL 매핑

2021. 4. 24. 15:20JSP 공부

이번에는 JSP의 URL 매핑에 대해서 알아 봅시다.

 

URL 매핑

JSP도 하나의 서버를 개발 및 관리하는 언어 입니다. 저희가 사용하고 있는 서버는 Tomcat 이라는 거죠.

 

JSP는 파일을 실행(요청)하면, 웹 서버에서 우선 jsp파일을 java코드로 변환합니다. 그 이후 그 파일을 컴파일하 고 html로 응답합니다. <- JSP 아키텍처

 

즉. ".jsp" 라는 파일을 컴파일(실행) 하면, JSP가 서버(Tomcat)에 이 파일을 실행해 달라고 요청을 하는 겁니다.

요청을 받은 서버는, ".jsp"라는 파일을 ".java"파일로 변환시켜서 컴파일하고 그 파일을 html 로 되돌려 줍니다.

 

URL매핑은, 위의 과정들을 기본적으로 담고 있다고 생각하시면 되겠습니다.

 

Servlet

URL 매핑을 하지 않으면, URL주소가 너무 길어지고, 경로가 노출되어 보안에 위험이 생기기 때문에 URL 매핑을 사용하여 그 문제들을 해결합니다.

 

URL 매핑에는 Servlet(서블릿) 이 있습니다.

 

Servlet 을 한번 만들어 봅시다.

Servlet 은 ".java" 파일이기 때문에, 프로젝트 내에 있는 src 폴더에 만들어 줍시다.

이름은 "Test1" 이라고 지어 주었습니다.

Servlet을 만들게 되면, 아래와 같이 자동으로 코드가 생성이 되어 집니다. 

근데, 이렇게 보면, 뭐가 뭔지 잘 모르겠죠? 일단 주석을 한번 다 지워볼까요?

주석을 지우니까, 별거 없죠?

기본 생성자 Test(). 메서드 doGet, doPost 라는 것.

HttpServlet 클래스를 상속받고 있기 때문에, HttpServlet 클래스의 메서드, 멤버변수 들을 사용할 수 있다는 것 정도 입니다.

 

그리고 @WebServlet("/Test1") 이라고 되어 있는 부분 있죠? 이 부분이 "어노테이션" 입니다.

 

어노테이션

어노테이션은 URL매핑 서블릿의 종류 중 1개 입니다.

어노테이션은 @WebServlet("/변경할명") 으로 사용 합니다.

여러가지 경로를 ("/변경할명")으로 변경한다 라는 뜻 입니다.

 

즉. 원래의 URL은 "ip주소:포트번호/프로젝트/하위폴더/하위폴더/파일명" 이지만, 이 URL을 "ip주소:포트번호/프로젝트명/Test1" 으로 매핑(연결) 해준다는 것 입니다.

web.xml 파일 수정

URL매핑을 web.xml 이라는 파일을 수정함 으로써 변경하는 방법 입니다.

 

그러려면, 먼저 web.xml 파일을 만들어야 하는데요,

프로젝트 내에 있는, "Deployment Descriptor.프로젝트명" 에 우클릭을 하고, "Generate Deployment Descriptor Stub" 를 눌러주면, WebContent폴더-WEB-INF폴더에 web.xml파일이 생성 됩니다.

 

※ 클릭할 경우. 약간의 시간이 소모 됩니다 ( 이클립스가 멈춘다고 놀라지 마세요. )

이렇게 생성된, web.xml 파일을 수정 해줍시다.

web.xml 을 더블클릭 해서 아래의 Soruce 를 누르고 아래와 같이 작성해주면 됩니다.

 

<servlet>

     <servlet-name>별칭</servlet-name>

     <servlet-class>(패키지이름).(sevlet이름)</servlet-class>

</servlet>

<servlet-mapping>

      <servlet-name>위에서 변경해준 별칭</servlet-name>

      <url-pattern>/실제URL매핑으로 원하는 이름</url-pattern>

</servlet-mapping>

 

※ web.xml 파일은 저장이 오래걸리니까, 모두 다 타이핑 하고 저장합시다

 

※ web.xml 방법은, 어노테이션 방법과 같이 사용할 수 없습니다.

이렇게만 봐도, URL매핑은 1번째 방법인 어노테이션 이 훨씬 쉽게 느껴지시죠? ㅎㅎㅎ

보통 어노테이션 방법으로 URL 매핑을 합니다.

 

이번에는 Servlet 을 이용한 URL 매핑 ( 어노테이션, web.xml ) 에 대해서 알아 보았습니다.

 

고생하셨습니다.