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를 리턴하게 됩니다.




참고글
블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,