e.b*_*ite 9 java servlets servlet-filters
你能帮忙检查为什么doFilter没有被调用
web.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<filter>
<filter-name>roseFilter</filter-name>
<filter-class>net.paoding.rose.RoseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>roseFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
班级签名:
import org.springframework.web.filter.GenericFilterBean;
public class RoseFilter extends GenericFilterBean {
Run Code Online (Sandbox Code Playgroud)
调用http:// localhost:8080/hello/world时返回404 ,我在doFilter设置断点,看来doFilter没调用?(我试过tomcat 6.0.18,6.0.29,jdk1.6)
Bal*_*usC 25
在以下情况下不会调用过滤器:
类路径中缺少过滤器类和/或不可加载或可实例化.但是,您应该在服务器的启动日志中注意到它.可以根据服务器日志中发现的异常/错误的解释找到解决方案.
有一个在未调用链之前运行的另一个过滤器FilterChain#doFilter(),而是RequestDispatcher#forward()或include()造成后续的过滤器链被完全跳过(当他们不听上FORWARD或INCLUDE调度员,他们在默认情况下只侦听REQUEST调度员).解决方法是修复错误的过滤器,或者相应地添加<dispatcher>FORWARD</dispatcher>等,或者重新排列过滤器声明,web.xml以便新过滤器位于另一个过滤器之前(反过来只需要确保新过滤器FilterChain#doFilter()正确使用:) ).
请求URL是完全错误的.您使用了http:// localhost:8080/hello/world.通过监听过滤器/*,这意味着webapp上下文应该是ROOT或至少是ROOT /hello.验证您的webapp上下文.我只是使用一个URL重试,该URL指向同一webapp中的有效JSP/Servlet,它生成非404响应.那么过滤器也会被调用吗?
| 归档时间: |
|
| 查看次数: |
17306 次 |
| 最近记录: |