2011-08-11 20 views
4

JSPでアプリケーションを作成していますが、URLから「.jsp」拡張子を削除する必要があります。例えば、私が必要:サーブレットマッピングを使用するJSPプロジェクトの.jsp拡張子を非表示にする

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

であるために:

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

私は、これは、「htaccessファイル」ファイルを使用して行うことができることを知っているが、私は他のいくつかの方法が必要です。私は次のコードを試しました:

<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

関連する問題