2011-08-11 28 views
4

JSP로 응용 프로그램을 작성 중이므로 URL에서 ".jsp"확장자를 제거해야합니다.서블릿 매핑을 사용하여 JSP 프로젝트에서 .jsp 확장자를 숨기기

http://example.com/search?q=stackoverflow 

나는 이것이 "의 .htaccess"파일을 사용하여 수행 할 수 있다는 것을 알고,하지만 난 다른 방법이 필요합니다 :

http://example.com/search.jsp?q=stackoverflow 

가 되려면 예를 들어, 나는이 필요합니다. 다음 코드를 시도했습니다 :

<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.</url-pattern> 
</servlet-mapping> 

그러나 이것은 작동하지 않았습니다. 누구든지이 작업을 수행 할 수있는 방법에 대한 제안이 있습니까? 모든 도움을 미리 감사드립니다. 개별적으로 각 JSP를 지정하고자 할 필요가 서블릿 매핑으로

답변

12

은 다음과 같습니다

<servlet> 
    <servlet-name>search</servlet-name> 
    <jsp-file>/search.jsp</jsp-file> 
</servlet> 
<servlet-mapping> 
    <servlet-name>search</servlet-name> 
    <url-pattern>/search</url-pattern> 
</servlet-mapping> 

모든 JSP를 공통 경로에있는 경우가 쉽다. 예 : /app/*.

request.getRequestDispatcher("/WEB-INF" + request.getPathInfo() + ".jsp").forward(request, response); 

<servlet> 
    <servlet-name>app</servlet-name> 
    <servlet-class>com.example.FriendlyURLServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>app</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
</servlet-mapping> 

이가 직접 요청 할 수 없도록 /WEB-INF 폴더에 있어야하기 위해 JSP를 가정합니다. 그러면 http://example.com/app/search/WEB-INF/search.jsp이 표시됩니다.

또는 Tuckey's URLRewriteFilter을 사용할 수 있습니다. Apache HTTPD의 mod_rewrite과 매우 유사합니다.

+1

Tuckey의 UrlRewriteFilter로 어떻게 할 수 있습니까? 나는 그것 [여기] (http://stackoverflow.com/questions/16267454/use-tucky-urlrewritefilter-to-hide-jsp-at-the-end-of-urls)을 물었다. – herrtim