2010-11-24 24 views
3

JSPに基づいた簡単なWebアプリケーションがあります。アプリケーションのルートは、次のようになります。サーブレットのJSP位置を設定する

| 
|--META-INF 
|--WEB-INF 
| `--web.xml 
|--img 
|--css 
|--index.jsp 
|--some1.jsp 
|--some2.jsp 
|--some3.jsp 
のweb.xmlに以下の行が含まれ

今すぐ
<servlet> 
    <servlet-name>servlet-jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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

が、私はプロジェクトのファイル構造を変更したい - 特別なディレクトリにすべての* .jspというファイルを移動:

| 
|--META-INF 
|--WEB-INF 
| `--web.xml 
|--img 
|--css 
|--jsp 
    |--index.jsp 
    |--some1.jsp 
    |--some2.jsp 
    |--some3.jsp 

"/some1.jsp" URLが要求されたときにjsp/some1.jspを処理するように "servlet-jsp"を設定できますか?

答えて

3

を使用して、JSPに転送し、その後/jsp/にマップされたサーブレットを作成することができますこのような明示的なサーブレットマッピングの作成は、JSP用のカスタムファイル拡張子を使用する場合にのみ必要です。より直接的に言えば、書いたサーブレット・マッピングを削除するだけかもしれません。

/から/jspへの転送要求は、filter mappingを定義することによって最も効果的です。また、独自のフィルタクラスを作成する必要があります。フィルタはサーブレットのようなものですが、JSPやサーブレットのようなコンテンツを生成するのではなく、トラフィックコントローラのようなものです。

+0

はい、削除してください。 webappの 'web.xml'に' JspServlet'を複製するのは意味がありません。何らかの理由でサーブレット・コンテナの電源を切っていない限り(順番にはそれほど意味がないので、最初に修正します)。 – BalusC

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

これはトリックを行うべきだと思います。

+0

私はこれらのパターンが許可されていないと感じています。しかし、彼に試してみましょう。 – Bozho

+0

@ボソ:それは可能です。今、これをテストする環境はありません。しかし、[このドキュメント](http://www2.roguewave.com/support/docs/leif/leif/html/bobcatug/7-3.html)から、それは許されるべきです。 – darioo

+2

'/ path/*'と '* .ext'のみがです。私が覚えている限り、組み合わせはありません。 – Bozho

1

あなたはサーブレットマッピングの後にパスを解析し、私は(?すべての)多くのコンテナが既に(任意のディレクトリにある)*.jspをマップだと思うrequest.getRequestDispatcer(targetJsp).forward()

関連する問題