1

I am using the following servlet-mapping in my web.xml file:

<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> 

To do some kind of a search. ex:

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

But the problem is that CSS, JS and Images are treated like a search request.

There are any patterns that strip out *.css, *.js, *.gif and etc, so the requests don't need to pass through my controller?

Thank you so much, bye bye!

4

3 回答 3

2

想到两个选择:

1) 通常,在这样的 web 应用程序中,由 servlet 处理的“动作”URL 被赋予像“”这样的子目录,或者被赋予像“ ”或“ ”这样/actions/*的扩展名(这就是 Struts 所做的) . 这样就很清楚哪些 URL 用于 servlet。这更像是一种包容性的解决方案,而不是您要求的独家解决方案,但我认为您想要的不可能。*.action*.do

2) 更冒险的选择是在 apache 安装之后设置您的 Web 应用服务器,将图像、css 等作为平面文件提供,仅将其他所有内容发送到应用服务器。通常,这样做是为了减轻应用服务器的负载。这将要求您将所有这些文件复制到一个单独的目录以供 apache 处理。

于 2008-11-17T01:44:19.907 回答
1

与其将某些扩展列入黑名单,不如考虑将到达 PostController servlet 的 URL 模式列入白名单。例如:

 <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>

如果您使用的是简单的 JSP。现在,对扩展名为 *.css、*.gif 等文件的 HTTP GET 请求将不会通过此 servlet 进行路由。

正如提问者所指出的,有更多的 URL 不应该通过这个控制器进行路由。

于 2008-11-17T02:02:52.367 回答
0

Jetty 按照您的预期解释 web.xml。我最近在将应用程序从 jetty 移动到 tomcat 时暴露了这个问题,突然间再也看不到我的静态资源了。非常令人沮丧。

于 2009-02-18T23:41:27.440 回答