【发布时间】: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/testpage和localhost/error404时
过滤器映射正在工作,当我在浏览器中看到 html 网页的源代码时,其中没有空白,但是当我尝试访问 localhost/ashhjb 或 localhost/kjdhvid/sdvfdjiu 类似的东西时,过滤器映射不起作用.这意味着当 servlet 调用“错误”页面而不是浏览器中的直接错误控制器方法时,我在 html 页面中看到空格。 localhost/error404 是直接调用错误页面 servlet。那么任何人都可以帮助我并建议我该怎么做吗?
感谢您提前提供帮助。
【问题讨论】:
-
默认情况下,过滤器似乎只在成功请求时执行。请参阅this answer:显然您需要添加
<dispatcher>ERROR</dispatcher>和<dispatcher>REQUEST</dispatcher>以获得过滤器以在成功和不成功的请求上执行。不过,找不到比这更明确的东西了 - 试试看它是否有帮助。 -
它有帮助。谢谢@fzzfzzfzz:D
标签: java spring jsp spring-mvc