JSP 페이지 URL 맵핑 하는 법
JSP 페이지는 별다른 설정이나 Spring MVC같은 프레임워크를 사용하지 않는 이상은 웹어플리케이션에 위치한 경로를 그대로 따라가게 됩니다. 예를 들어 작성한 JSP 파일을 webapps/myJsp/jspTest.jsp로 저장해 두었다면 클라이언트에서 접근할 때의 URL은 http://xxx.xxx.xx/myJsp/jspTest.jsp 가 됩니다.
그러나 JSP 페이지 또한 보통 작성하는 서블릿과 마찬가지로 URL을 설정해야 할 때가 있을것입니다. JSP또한 결국은 서블릿이므로 web.xml 설정을 통해 URL 맵핑을 할 수 있습니다.
서블릿 설정과 마찬가지로 web.xml에 다음처럼 <servlet/> 태그와 <servlet-mapping/> 설정을 사용합니다.
<servlet>
--JSP 페이지 등록--
</servlet>
<servlet-mapping>
--등록한 JSP 페이지에 대한 URL 맵핑 설정--
</servlet-mapping> |
cs |
<jsp-file/> 태그로 JSP URL 설정하기
이클립스를 기준으로 JSP 파일이 위와 같이 구성되어 있는 경우에 web.xml 설정에서 JSP 파일을 다음과 같이 맵핑할 수 있습니다. 톰캣을 기준으로는 webapps/jspStudy/myJsp.jsp입니다.
서블릿을 맵핑할때와 마찬가지로 <servlet/> 태그와 <servlet-mapping/> 태그를 사용하며, 유일하게 다른점은 서블릿을 등록할 때에는 <servlet-class/> 태그를 사용하지만 그 대신에 <jsp-file/> 태그를 사용한다는 점 입니다. <jsp-file/> 태그를 통해 JSP 파일의 위치를 지정한 이후에 URL 맵핑은 기존의 서블릿을 맵핑할때와 똑같이 설정해주면 됩니다.
servlet>
<servlet-name>myJsp</servlet-name>
<jsp-file>/myJsp.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>myJsp</servlet-name>
<url-pattern>/mappedUrl</url-pattern>
</servlet-mapping> |
cs |
원래대로라면 [서버ip]:8080/jspStudy/myJsp.jsp 와 같이 호출해야 하지만 설정을 바꿔 주었기에 [서버ip]:8080/jspStudy/mappedUrl 로 호출해야 합니다.
딱히 별 내용이 없는 myJsp.jsp 소스입니다. 테스트를 위해 복붙하는 경우를 위해 남겨드립니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>myJsp.jsp</h1>
</body>
</html> |
cs |
<jsp-file/>로 경로 등록하고 JSP 파일을 곧바로 호출하는 경우
만약 JSP 파일을 web.xml로 등록해둔 상태에서 평소에 사용하던 것과 같이 곧바로 호출한다면 어떻게 될까요? 이때에는 web.xml에 등록했다고 해도 JSP 파일이 그대로 호출됩니다.
<jsp-file/>로 경로 등록하고 JSP 파일을 호출되지 않게 감추기
만약 임의로 지정한 URL로만 호출되게 하고 JSP 파일을 직접 호출되지 않도록 감추려면 어떻게 해야할까요? 이럴때는 [웹 어플리케이션 경로]/WEB-INF/ 하위에 JSP 파일을 감추면 됩니다.
Servlet/JSP 스펙에는 웹어플리케이션 하위에 있는 WEB-INF 디렉터리는 외부에서 접근 불가능한 경로로 정의하고 있습니다. 따라서 이곳에 JSP 파일을 두고 경로를 맵핑해두면 됩니다.
<servlet>
<servlet-name>myJsp</servlet-name>
<jsp-file>/WEB-INF/myJsp.jsp</jsp-file>
</servlet> |
cs |
만약 JSP 파일에 직접 접근하려 하면 다음과 같이 JSP 파일을 찾지 못한 것으로 인식하고 HTTP 응답코드 404를 리턴하게 됩니다.
참고글
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] include 디렉티브로 다른 JSP 페이지 포함시키기 (0) | 2018.08.16 |
---|---|
[서블릿/JSP] JSP 페이지 초기화시 ServletConfig의 초기화 파라미터 사용하기 (0) | 2018.08.14 |
[서블릿/JSP] JSP 페이지 초기화와 종료 메서드. jspInit(), jspDestroy() (0) | 2018.08.13 |
[서블릿/JSP] forward 사용시 Cannot forward after response has been committed 예외 (0) | 2018.08.10 |
[서블릿/JSP] RequestDispatcher로 include() 하기 (0) | 2018.08.10 |