gpt4 book ai didi

spring-mvc - 简单的 Web 应用程序过滤器不过滤请求

转载 作者:行者123 更新时间:2023-12-02 02:16:11 25 4
gpt4 key购买 nike

开始使用 STS 并创建一个新的基本“Hello World”Spring MVC 项目。我想在我的应用程序中添加一个过滤器,所以我使用以下 doFilter 方法创建了一个过滤器 (HelloWorldFilter.java):

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("Entering Filter");
request.setAttribute("hello", "Hello World from HelloWorldFilter!");
chain.doFilter(request, response);
System.out.println("Exiting HelloWorldFilter");
}

根据我的阅读,它(我的过滤器)也应该在应用程序上下文中定义为 spring bean(Spring 将它委托(delegate)给我的过滤器 - 来自 this manual)

所以在我的应用上下文中我有:

<bean id="helloWorldFilter" class="com.yl.mvc.filters.HelloWorldFilter"> </bean>

我的 web.xml 包含以下内容:

<filter>
<display-name>HelloWorldFilter</display-name>
<filter-name>HelloWorldFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>HelloWorldFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

在我的 .jsp 文件中,我添加了:

<P><%=request.getAttribute("hello")%></P>

但我在我的网页中看到的都是空的(我期望 HelloWorldFilter 提供 Hello World!)。过滤器甚至不会被调用..

我是不是漏掉了什么?

提前致谢,瑜珈

最佳答案

好的,解决了。

过滤器(它是一个 spring bean)在 bean 定义中(在应用程序上下文中)必须与 filter-name 元素(在 web.xml 中)具有相同的名称。

在我的例子中,我在我的应用程序上下文中有:

<bean id="helloWorldFilter"...

在我的 web.xml 中:

<filter-name>HelloWorldFilter</filter-name>

因此,一次是大写 H,一次是小写 h - 这导致了问题。为了解决这个问题,我只是将应用程序上下文中的 bean id 更改为 HelloWorldFilter。

关于spring-mvc - 简单的 Web 应用程序过滤器不过滤请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10453109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com