1

web.xmlファイルで次のサーブレット マッピングを使用しています。

<servlet>
    <servlet-name>PostController</servlet-name>
    <servlet-class>com.webcodei.controller.PostController</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>PostController</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping> 

ある種の検索を行うため。元:

 http://www.myweb.com/The search string here 

しかし問題は、CSS、JS、画像が検索リクエストのように扱われることです。

*.css、*.js、*.gif などを取り除くパターンがあるので、リクエストはコントローラーを通過する必要はありませんか?

どうもありがとう、バイバイ!

4

3 に答える 3

2

次の 2 つのオプションが思い浮かびます。

1) 通常、このような Web アプリでは、サーブレットによって処理される「アクション」URL には、「 」のようなサブディレクトリが与えられるか、 「 」や「 」/actions/*のような拡張子が与えられます(これは Struts が行うことです)。 . このようにして、どの URL がサーブレットを対象としているかが明確になります。これは、あなたが求めている排他的な解決策ではなく、より包括的な解決策ですが、あなたが望んでいることは可能ではないと思います.*.action*.do

2) もう少し冒険的なオプションは、画像、css などをフラット ファイルとして提供する apache インストールの背後に Web アプリ サーバーをセットアップし、それ以外はすべてアプリ サーバーに送信することです。通常、これはアプリ サーバーの負荷を軽減するために行われます。これらすべてのファイルを、apache が処理できるように別のディレクトリにコピーする必要があります。

于 2008-11-17T01:44:19.907 に答える
1

Rather than blacklisting certain extensions, you might consider whitelisting the URL patterns that reach your PostController servlet instead. For instance:

 <servlet>
    <servlet-name>PostController</servlet-name>
    <servlet-class>com.webcodei.controller.PostController</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>PostController</servlet-name>
    <url-pattern>/*.jsp</url-pattern>
 </servlet-mapping>

if you are using simple JSPs. Now, HTTP GET requests for files with extension *.css, *.gif, etc. will not be routed through this servlet.

As the questioner pointed out, there are many more URLs that should not be routed through this controller than otherwise.

于 2008-11-17T02:02:52.367 に答える
0

Jetty は、期待どおりに web.xml を解釈します。最近、アプリケーションを jetty から tomcat に移動したときに、この問題が明らかになりました。突然、静的リソースが表示されなくなりました。とてもイライラします。

于 2009-02-18T23:41:27.440 に答える