当前位置: 首页 > 面试题库 >

doFilter没有被调用

艾敏学
2023-03-14
问题内容

您能帮忙检查一下为什么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>

类签名:

import org.springframework.web.filter.GenericFilterBean;
public class RoseFilter extends GenericFilterBean {

调用http:// localhost:8080 / hello /
world时
返回404
,我在doFilter处设置了断点,看来doFilter没有被调用?(我尝试了tomcat 6.0.18、6.0.29,jdk1.6)


问题答案:

在以下情况下将不会调用该过滤器:

  1. 过滤器类在类路径中丢失和/或不可加载或不可实例化。但是,您应该已经在服务器的启动日志中注意到它。将根据对服务器日志中发现的异常/错误的解释来找到解决方案。

  2. 有一个在未调用链之前运行的另一个过滤器FilterChain#doFilter(),而是RequestDispatcher#forward()include()造成后续的过滤器链被完全跳过(当他们不听上FORWARDINCLUDE调度员,他们在默认情况下只侦听REQUEST调度员)。解决方案是修复错误的过滤器,或相应地添加<dispatcher>FORWARD</dispatcher>等,或重新排列过滤器声明,web.xml以使新过滤器位于另一个过滤器 之前 (而您仅需确保新过滤器使用FilterChain#doFilter()正确即可:) )。

  3. 请求网址是完全错误的。您使用了http:// localhost:8080 / hello / world。监听过滤器后/*,这意味着webapp上下文应为ROOT或至少是ROOT /hello。验证您的webapp上下文。我只想尝试使用URL,该URL指向同一webapp内的有效JSP / Servlet,该URL会生成非404响应。过滤器是否也会被调用?



 类似资料:
  • 问题内容: 我在告诉Android 方向更改时不打电话时遇到了麻烦。我已添加到清单中,但仍在调用方向更改时添加。这是我的代码。 AndroidManifest.xml SearchMenuActivity.java 还有我的LogCat输出 有人知道我在做什么错吗?谢谢。 问题答案: 要尝试的几件事: 而不是 确保您没有在任何地方打电话。这将导致onConfigurationChange()无法触

  • 问题内容: 我正在尝试在Angular中实现d3指令,这很困难,因为在视觉上什么也没有发生,并且在控制台上没有抛出任何错误。 这是我的d3指令: 这是我的HTML: 起初我以为不是要附加,因为要检查看起来像的元素,但是现在我认为该指令根本没有在运行。我从一开始就将其嵌入其中,也没有出现。我缺少简单的东西吗? 编辑: 我尝试将顶行更改为 但这也不起作用。我什至不知道两个标题之间有什么区别… 问题答案

  • 我编写了一个代码来启动活动A到活动B,活动A和B都有片段实现。 场景:如果活动A经常启动包含碎片的活动B,那么大多数时候它都错过了碎片。ondetach...我检查了日志,通常它会给我下面的重写方法日志: null null 我在用 我有什么遗漏吗?有什么建议吗?

  • 我的问题类似于不调用Resteasy Bean验证。不过,那里的解决方案并不奏效。 我使用的是Restease3.0.9。最终与resteasy-validator提供者-11在我的pom。我正在使用一个定制的码头类启动整件事。 奇怪的是,验证在@PathParams上运行良好,但在bean上却不行。 在这种情况下,myParam上的@Size约束可以正常工作。但是MyBean中的@NotNull

  • 问题内容: 我正在开发具有以下功能的条形码扫描应用程序: •访问设备相机,在SurfaceView上预览相机,并自动重新对焦 •Attemtps使用两种方法解码条形码 a)在使用 onTouchEvent(MotionEvent event)的 SurfaceView touch上,尝试拍摄条形码的图片,但获取 java.lang.RuntimeException:takePicture失败 b)

  • 我有个问题。也许这是非常基本的。我们可以这样做吗 而不实际调用我们测试类中的方法? 我的测试类: 如您所见,“提供者”只被嘲笑而没有被显式调用。调用它的唯一方法是当我调用action.update()时;我得到了错误 通缉但未调用:实际上,与此模拟没有任何交互。provider.get名称()