【问题标题】:Filter mapping in Spring MVC is not working on some URLSpring MVC 中的过滤器映射不适用于某些 URL
【发布时间】:2015-03-07 19:47:07
【问题描述】:

我正在使用 HTML 过滤器从我的 jsp 页面和 servlet 中删除空格。我正在学习使用 Spring MVC 进行 JSP 开发。所以我使用带有 web.xml 文件的过滤器映射和错误页面,而我的 web.xml 代码是

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<error-page>
    <error-code>404</error-code>
    <location>/error404</location>
</error-page>

<filter>
    <filter-name>whitespaceFilter</filter-name>
    <filter-class>test.web.htmlminify.HTMLMinifyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>whitespaceFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

我有三个没有方法但只返回页面的控制器

HomeController, TestController, Error404Controller

其中有 homePage()、testPage() 和 errorPage() 方法,它们返回以下,

return "home";
return "test";
return "error";

我在 WEB-INF 文件夹之外确实有一个名为 abc.jsp 文件的 jsp 文件。

所以情况是当我访问localhost, localhost/abc.jsp, localhost/testpagelocalhost/error404

过滤器映射正在工作,当我在浏览器中看到 html 网页的源代码时,其中没有空白,但是当我尝试访问 localhost/ashhjblocalhost/kjdhvid/sdvfdjiu 类似的东西时,过滤器映射不起作用.这意味着当 servlet 调用“错误”页面而不是浏览器中的直接错误控制器方法时,我在 html 页面中看到空格。 localhost/error404 是直接调用错误页面 servlet。那么任何人都可以帮助我并建议我该怎么做吗?

感谢您提前提供帮助。

【问题讨论】:

  • 默认情况下,过滤器似乎只在成功请求时执行。请参阅this answer:显然您需要添加&lt;dispatcher&gt;ERROR&lt;/dispatcher&gt;&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt; 以获得过滤器以在成功和不成功的请求上执行。不过,找不到比这更明确的东西了 - 试试看它是否有帮助。
  • 它有帮助。谢谢@fzzfzzfzz:D

标签: java spring jsp spring-mvc


【解决方案1】:

正如@fzzfzzfzz 所说,我需要添加这两个调度程序

<dispatcher>REQUEST</dispatcher>
<dispatcher>Error</dispatcher>

它奏效了。再次感谢@fzzfzzfzz

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多