`
tudusi
  • 浏览: 1051211 次
文章分类
社区版块
存档分类
最新评论

通过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" />



分享到:
评论

相关推荐

    DelegatingFilterProxy示例

    DelegatingFilterProxy代码示例,包含普通filter和代理filter两个示例,帮助加深对DelegatingFilterProxy的理解。

    spring-web-2.5.jar

    org.springframework.web.filter.DelegatingFilterProxy.class org.springframework.web.filter.GenericFilterBean.class org.springframework.web.filter.Log4jNestedDiagnosticContextFilter.class org.spring...

    spring security 参考手册中文版

    12.2.3使用RequestPostProcessor在Spring MVC测试中以用户身份运行 106 作为用户在Spring MVC测试中使用注释运行 108 12.2.4测试HTTP基本认证 109 12.3 SecurityMockMvcRequestBuilders 109 12.3.1测试基于表单的...

    简单配置 shiro + spring +springMVC+hibernate简单框架

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

    SPRING API 2.0.CHM

    ReflectionUtils.MethodFilter ReflectiveAspectJAdvisorFactory ReflectiveAspectJAdvisorFactory.SyntheticInstantiationAdvisor ReflectiveLoadTimeWeaver ReflectiveMethodInvocation ...

    Spring Security 中文教程.pdf

    19.2. 在Spring Security里使用LDAP 19.3. 配置LDAP服务器 19.3.1. 使用嵌入测试服务器 19.3.2. 使用绑定认证 19.3.3. 读取授权 19.4. 实现类 19.4.1. LdapAuthenticator实现 19.4.1.1. 常用功能 ...

    Spring Security-3.0.1中文官方文档(翻译版)

    Spring Security-3.0.1 中文官方文档(翻译版) 这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进 行修 正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行...

    SpringSecurity 3.0.1.RELEASE.CHM

    18.2. 在Spring Security里使用LDAP 18.3. 配置LDAP服务器 18.3.1. 使用嵌入测试服务器 18.3.2. 使用绑定认证 18.3.3. 读取授权 18.4. 实现类 18.4.1. LdapAuthenticator实现 18.4.1.1. 常用功能 18.4.1.2. ...

    单点登录sso-shiro-cas-maven

    &lt;filter-class&gt;org.springframework.web.filter.DelegatingFilterProxy&lt;/filter-class&gt; &lt;param-name&gt;targetFilterLifecycle &lt;param-value&gt;true &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;shiro...

    Nginx安装包

    4 &lt;filter-class&gt;org.springframework.web.filter.DelegatingFilterProxy&lt;/filter-class&gt; 5 &lt;/filter&gt; 6 &lt;filter-mapping&gt; 7 &lt;filter-name&gt;springSessionRepositoryFilter&lt;/filter-name&gt; 8 &lt;url-pattern&gt;/* 9 &lt;/...

    gradle-spring-4-mvc-boilerplate

    如该软件包所指定的那样,DelegatingFilterProxy被认为可与Spring Web MVC一起使用,并且仅与Spring Web MVC一起使用(aka控制器,带或不带注释)。 它似乎不能与普通的servlet-jsps一起使用,因为您似乎正在尝试...

    SSH集成代理2.0版和struts.xml中DelegatingActionProxy代理搭配

    SSH集成代理2.0版和struts.xml中DelegatingActionProxy代理搭配

    Spring Security3 张卫滨(译)

    添加Spring DelegatingFilterProxy到web.xml文件...................................................... 20 添加Spring Security XML配置文件的应用到web.xml ................................................ ...

    inject-dependencies-into-your-filters

    Dead Code Rising 代码示例展示了如何使用 Spring 的 DelegatingFilterProxy 将依赖项注入过滤器。 在阅读文章。

    尚硅谷Shiro视频教程

    尚硅谷_Shiro_集成 Spring · 04.尚硅谷_Shiro_工作流程(1) · 05.尚硅谷_Shiro_DelegatingFilterProxy · 06. 尚硅谷_Shiro_权限 URL 配置细节 · 07. 尚硅谷_Shiro_认证思路分析 · 08.尚硅谷_Shiro_实现认证...

Global site tag (gtag.js) - Google Analytics