質問

私は、サーブレットは、例えば、プレフィックスと拡張子に応じてファイルへのリクエストを処理したい。

接頭辞_ *。xmlの

要求パスの最初と最後のマッピングが可能ではないので、

、私は私のサーブレットにすべての* .xmlの要求をマッピングしました。 質問は今ある:私は要求がxmlファイルに「正常な」要求のように扱われているように、「prefix_」で始まらないXMLファイルのための私のサーブレットから脱落することができますか。

これはおそらく非常に簡単ですが、私はこれを見つけることができていないようです...: - /

事前のおかげでたくさんの

役に立ちましたか?

解決

私は強く、このための適切なMVCフレームワークを使用してお勧めします。あなたが発見したとして、それがディスパッチを要求するために来るとき、標準のサーブレットAPIの柔軟性は非常に限られています。

理想的には、パスパターンに基づいてdiapcthingをしているフレームワークで、MVCフレームワークとの組み合わせで、既存のサーブレットコードを使用することができるだろう、とサーブレットは、ビジネスロジックを実行します。幸いにも、Spring MVCのはServletForwardingControllerを使用して、あなただけのことを行うことができます。それは非常に軽量な春の設定になると思います。

つまり、あなたのweb.xmlでこのような何かを持っていると思います

<servlet>
   <servlet-name>myServlet</servlet-name>
   <servlet-class>foo.MyServlet</servlet-class>
</servlet>

<servlet>
   <servlet-name>spring</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<url-mapping>
   <servlet-name>spring</servlet-name>
   <url-pattern>*</url-pattern>
</url-mapping>

あなたは、このようなWEB-INF /春-servlet.xmlファイルを持っているでしょう

<beans>
    <bean name="/prefix*.xml" class="org.springframework.web.servlet.mvc.ServletForwardingController">
       <property name="servletName" value="myServlet"/>
    </bean>
</beans>

そして、それはかなりそれだろう。 /prefix*.xmlのための要求はすべてがmyservletに行くだろう、と他のすべてのコンテナに通じ落ちるます。

他のヒント

あなたは、Apacheの書き換えモジュールを使用することができ、そのWebコンテナインスタンスの前にはApacheを使用する/計画を使用している場合は、

別のソリューション(多分あなたのために適合)があります。 Webappコンテナの取り扱いが容易なものにURLを書き換えます。

この情報がお役に立てば幸いです。 デビッドます。

)SHUREが、あなたはすべての* .xmlの要求をキャッチしたら、あなたはHttpServletRequest.getRequestURI(経由であなたのコードで要求を再検査することができない

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String uri =req.getRequestURI();
        int i = uri.lastIndexOf('/');
        int j = uri.lastIndexOf('.', i);
        if (uri.substring(i+1, j).startsWith("prefix_")) {
            // your code
        }
    }

(コードがテストされていない、唯一のアイデア...)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top