`
muyu114
  • 浏览: 135197 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

通过spring在filter注入bean(DelegatingFilterProxy与servlet filter)

 
阅读更多
web应用中,我们经常使用filter机制来确定外部请求的用户是否登录,角色是否合法等。Spring提供了

一个DelegatingFilterProxy机制来完成filter的部分功能。通过例子做一个简单对比。 二者看起来

没有什么太大的区别,在spring中,filter被纳入了bean 管理机制。

1.servlet filter

* LoginFilter .java

package servlet.filter;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class LoginFilter implements Filter {

protected FilterConfig filterConfig;

public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}

public void destroy() {
this.filterConfig = null;
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws java.io.IOException, ServletException {

HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;

String username = req.getParameter("j_username");
System.out.println("this is in servlet filter");

chain.doFilter(request, response);
}

}

*web.xml

<filter>
<filter-name>simplelogin</filter-name>
<filter-class>servlet.filter.LoginFilter</filter-class>
<init-param>
<param-name>hello</param-name>
<param-value>hello filter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>simplelogin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2. Spring filter

*LoginFilter.java

package filter;

import java.io.IOException;
import java.security.Principal;

import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.logging.*;
public class LoginFilter implements Filter {
private FilterConfig filterConfig = null;
Log log = LogFactory.getLog(LoginFilter.class);

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
Principal principal=request.getUserPrincipal();
HttpServletResponse response=(HttpServletResponse)res;

log.info("filter user name:"+request.getParameter("j_username")+":"+principal.toString

());
log.info("filter password :"+request.getParameter("j_password"));
chain.doFilter(req,res);
}

public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;

}

public void destroy() {
filterConfig = null;
}
}

*
web.xml

<filter>
<description>LoginFilter</description>
<display-name> LoginFilter</display-name>
<filter-name>LoginFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<description>
</description>
<param-name>targetBeanName</param-name>
<param-value>loginFilter</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


*spring context config

<bean id="loginFilter" class="filter.LoginFilter" />



分享到:
评论

相关推荐

    Spring 管理filter 和servlet

    开发者无需在Filter或Servlet内部硬编码bean名称,而是通过Spring容器自动注入所需的依赖,大大提升了代码的整洁度和复用性。此外,Spring提供的Filter和Servlet代理类,进一步简化了集成过程,使开发者可以专注于...

    DelegatingFilterProxy示例

    在Spring框架中,`DelegatingFilterProxy`是一个非常有用的工具,它允许我们将Spring的Bean作为Servlet过滤器(Filter)来使用。这个组件是Spring MVC的一部分,主要用于将Spring的AOP(面向切面编程)能力引入到Web...

    spring MVC所需jar包和filter的配置

    - `DelegatingFilterProxy`:Spring提供的Filter,用于代理Spring的Bean,例如Spring Security的Filter链。 - 编写自定义Filter:扩展`javax.servlet.Filter`类,实现`doFilter`方法,然后在`web.xml`中配置。 3....

    spring过滤器

    在Spring框架中,我们通常使用DelegatingFilterProxy来整合Spring的AOP(面向切面编程)功能与Servlet过滤器。 1. **DelegatingFilterProxy**: 这是Spring提供的一个特殊Filter,它的主要作用是将过滤器的职责委托...

    Spring Security如何在Servlet中执行

    在Servlet环境中,Spring Security通过集成到Servlet的过滤器链(Servlet Filter Chain)中来实现在Web应用中的安全控制。以下是关于Spring Security如何在Servlet中执行的详细说明: 1. **Servlet Filter Chain**...

    过滤器 spring4.1+jdk1.8版本

    DelegatingFilterProxy是一个特殊的Servlet Filter,它将过滤器的工作委托给Spring容器管理的一个Bean。这样,我们可以在Spring配置文件中定义一个Bean,并将其类型设置为实际的过滤器实现类。 Java 8 (JDK1.8)引入...

    maven spring security框架搭建

    &lt;filter-class&gt;org.springframework.web.filter.DelegatingFilterProxy&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;springSecurityFilterChain&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping...

    spring springmvc mybatis框架整合需要的jar包

    最后,应用的启动入口通常是一个Servlet或Filter,例如Spring的ContextLoaderListener或DelegatingFilterProxy,它们负责初始化Spring容器,并在Web应用启动时加载配置。 总结起来,整合Spring、SpringMVC和MyBatis...

    3.springSecurity源码分析1

    5. 初始化过程:在Web应用程序启动时,SpringSecurity的配置会加载到Spring的ApplicationContext中,`springSecurityFilterChain`这个bean被创建并包含了一系列的Filter实例。当HTTP请求到达时,...

    利用spring security 给cxf的业务方法添加保护

    在`/WEB-INF/cxf-servlet.xml`中,我们可以配置CXF的服务行为,比如如何处理异常,以确保与Spring Security的集成流畅。 通过这种方式,Spring Security可以有效地保护CXF服务中的业务方法,确保只有经过身份验证和...

    Spring Security中的Servlet过滤器体系代码分析

    Spring Web为Servlet Filter提供了`GenericFilterBean`,这是一个抽象的Filter实现,它将Filter与Spring的依赖注入(DI)和面向切面编程(AOP)结合起来。`GenericFilterBean` 是Spring IoC容器中的一个Bean,因此...

    spring security 3.0.5中文详解

    该框架能够在Web请求级别和方法调用级别处理身份验证与授权问题,并且深度集成了Spring Framework的核心特性,如依赖注入(DI)和面向切面编程(AOP)。通过这些集成,开发者可以更加灵活地定制安全性策略,同时也...

    spring-security-web-3 source code

    - **Filter的注册与配置**:理解Spring Security如何通过`DelegatingFilterProxy`将Spring Bean注册为Servlet Filter,并配置过滤链。 - **SecurityContextHolder**:查看如何在应用程序中设置和获取安全上下文,...

    学习Spring-Session+Redis实现session共享

    当配置完成后,开发者可以像往常一样使用标准的Servlet API来获取和设置Session,而底层则会通过Spring-Session将这些信息存储在Redis中。 下面展示了一个简单的示例,该示例演示了如何在控制器中设置Session: ``...

    通过过滤器管理用户权限(2)

    - 例如,`DelegatingFilterProxy` 是Spring提供的一个Filter,用于代理Spring Bean,通常用于配置Spring Security的`FilterSecurityInterceptor`。 3. **实现用户权限过滤器** - 创建自定义Filter:你需要创建一...

    初识 Spring Security - v1.1.pdf

    该框架能够在Web请求级别以及方法调用级别处理身份验证(Authentication)与授权(Authorization)。 #### 二、Spring Security 的应用场景 - **适用于Java工程师**:Spring Security主要针对Java开发者,尤其是那些...

    spring整合shiro

    - **配置 Shiro 过滤器**:在 web.xml 中添加 DelegatingFilterProxy 过滤器,它的作用是将请求委托给 Spring 容器中的 Bean 来处理。在这里,我们配置的 filter-name 是 "abc",对应的是 Spring 配置文件中的 Bean...

    spring flex BlazeDS 集成官方文档(英文)

    - 在Spring配置文件中定义`message-broker` bean,并指定相应的属性。 - 示例配置: ```xml &lt;bean id="messageBroker" class="org.springframework.messaging.simp.config.MessageBrokerRegistry"&gt; &lt;value&gt;/...

    过滤器.zip

    7. **Spring框架中的Filter**:在Spring MVC中,虽然可以使用传统的Servlet Filter,但Spring也提供了DelegatingFilterProxy,它可以用来代理Spring的Bean,这样过滤器也能享受到Spring的依赖注入。 通过分析和实践...

    JAVAEE过滤器的使用

    在Spring MVC框架中,可以使用Spring的DelegatingFilterProxy来代理Spring的Bean,这样可以利用Spring的依赖注入和AOP特性。 9. **动态过滤** 通过编程方式动态地添加、删除过滤器,可以实现更加灵活的过滤策略。...

Global site tag (gtag.js) - Google Analytics