最近我在做项目中遇到一个问题,就是自定义一个过滤器Filter,我想在改过滤器里面获取Service,从而进行一些业务操作,但是,我怎么也获得不到交给spring管理的Service,后来在网上找了很久,终于把这个问题解决了,这个错误就是我在web.xml里面配置是按照Servlet过滤器配置的,在过滤器初始化的时候,spring的实例还没有初始化,所以无法获得spring的实例,后来参考网上的方案,使用DelegatingFilterProxy解决了这个问题。
DelegatingFilterProxy就是一个对于servlet filter的代理,用这个类的好处主要是通过Spring容器来管理servlet filter的生命周期,还有就是如果filter中需要一些Spring容器的实例,可以通过spring直接注入,另外读取一些配置文件这些便利的操作都可以通过Spring来配置实现。
DelegatingFilterProxy的使用方法,
首先在web.xml中配置:
<filter> <filter-name>urlFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>urlFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
然后在Spring的配置文件中,配置具体的Filter类的实例。
<bean id="urlFilter" class="com.nxt.count.filter.UrlFilter"> <property name="visitLogService" ref="visitLogService"/> </bean>
注意:在Spring中配置的bean的name要和web.xml中的<filter-name>必须一致
或者在DelegatingFilterProxy的filter配置中配置初始参数:targetBeanName,对应到Spring配置中的beanname。
如果要保留Filter原有的init,destroy方法的调用,还需要配置初始化参数targetFilterLifecycle为true,该参数默认为false
相关推荐
Java Web 开发中,安全是至关重要的一个环节。XSS(Cross Site Scripting)和 SQL ...开发者可以通过研究项目源码,了解如何自定义过滤器、配置安全策略以及利用Spring Boot的安全特性,提升自己的Web应用开发技能。
Spring Web模块包含了Servlet监听器、过滤器、DispatcherServlet等核心组件,它们协同工作以接收请求、解析请求参数、执行业务逻辑并返回响应。此外,Spring还提供了事务管理、数据访问/集成、AOP等功能,极大地增强...
1. 配置Struts2:在Web项目的web.xml中配置Struts2的前端控制器Filter,以及相关的Struts2核心过滤器和配置文件路径。 2. 引入Hibernate:配置Hibernate的sessionFactory,包括数据库连接信息、实体类扫描路径等。...
在`web.xml`中,我们配置了Spring容器的初始化和Struts2框架的过滤器: 1. **Spring 初始化**:通过`<context-param>`定义了Spring的配置文件路径,这里是`classpath:beans.xml`。`ContextLoaderListener`是一个...
在SSH项目中,web.xml通常需要配置Struts核心过滤器和Spring监听器。 配置Spring主要涉及创建和配置applicationContext.xml文件,以及可能的属性文件config.properties。在Spring配置文件中,会通过bean元素声明...
在配置文件`web.xml`中,我们需要定义一个名为`struts`的Filter,并指定过滤器类`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`,然后将`.do`等请求映射到该Filter上。 Struts2的配置...
`web.xml` 是Web应用程序的核心配置文件之一,它定义了应用程序中的过滤器、监听器、servlet等元素。 - **过滤器** (`CharacterEncodingFilter`):该过滤器用于设置字符编码,确保数据正确传输。代码片段如下: ``...
在这里,我们需要配置Struts2的前端控制器Filter,Spring的DispatcherServlet以及可能的其他过滤器和监听器,以确保它们按正确的顺序启动和处理请求。 完成以上步骤后,SSH2整合的基本框架就搭建完成了。现在,...
SSH整合是指将Struts2、Spring和Hibernate三个开源框架整合在一起,用于构建高效、灵活的企业级Web应用程序。在这个实例中,我们将看到一个基于Struts2.1.x、Spring2.5.x和Hibernate3.2.x的简单登录功能的实现。 ...
- 配置Shiro的Web过滤器:在Spring的web.xml中配置`DelegatingFilterProxy`,指向Shiro的Filter配置。 - 创建Shiro配置类:在Spring Boot项目中,可以创建一个@Configuration类,使用@Bean方法配置所需的Shiro组件...
数据表Blob字段在Hibernate持久化映射文件中的type为org.springframework.orm.hibernate3.support.BlobByteArrayType,即Spring所提供的用户自定义的类型,而非java.sql.Blob。 3在Spring中使用org.springframework...
- 配置 `web.xml`,设置过滤器,让 Spring 初始化容器,并在启动时加载配置。 - 在 `web.xml` 中配置 Struts2 的前端控制器 Filter。 - 如果需要,还可以配置 `hibernate.cfg.xml` 中的相关参数。 7. **创建实体...
在这个SSH应用中,它可能包含了Struts2的Filter配置,Spring的DispatcherServlet配置,以及其他必要的Web应用设置。 `applicationContext-common.xml`和`applicationContext-beans.xml`都是Spring的配置文件,用来...
在SSH框架中,web.xml通常用于注册DispatcherServlet(Spring MVC的前端控制器)、Filter(如Struts2的FilterDispatcher)以及Spring的ContextLoaderListener,以启动Spring应用上下文。 5. **jar包**:SSH框架所需...
SSH框架,全称为Struts+Hibernate+Spring,是Java Web开发中的一个经典组合,用于构建高效、可维护的Web应用程序。下面将详细解释SSH各部分的作用,并提供相关的配置和代码示例。 首先,Struts是MVC(模型-视图-...
3. 在`web.xml`中配置Spring的上下文加载监听器`ContextLoaderListener`和`ContextConfigLocation`,以便在应用启动时加载Spring配置。 4. 配置Hibernate的相关属性,如数据源、数据库连接参数、实体映射文件等。 5....
在项目的`WEB-INF`目录下创建`web.xml`文件,该文件是Web应用的基本配置文件,其中包含了对Spring、Struts和过滤器的配置。示例中的`web.xml`部分代码展示了如何配置Spring的上下文加载监听器、字符编码过滤器以及...
为了确保Web应用中数据的一致性和正确性,还需要配置字符编码过滤器。 ```xml <!--Spring字符编码过滤器--> <filter> <filter-name>Springcharacterencodingfilter</filter-name> <filter-class>org.spring...
接着,需要在web.xml文件中配置过滤器和监听器,以启动Struts2和Spring。Struts2的过滤器(`filter-class`为`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`)会处理所有的HTTP请求,而...