通过spring在filter注入bean(DelegatingFilterProxy与servlet filter) .
2010-06-11 17:04
555 查看
通过spring在filter注入bean(DelegatingFilterProxy与servlet filter)
分类:Web开发 2010-06-11 17:04
769人阅读 评论(0)
收藏
举报
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注入bean(DelegatingFilterProxy与servlet filter)
- Spring管理filter和servlet ( FilterToBeanProxy/DelegatingFilterProxy)
- 非spring组件servlet、filter、interceptor中注入spring bean
- 如何让servelt和Filter注入到spring容器或者在servlet中调用spring中的bean
- web中filter需要注入bean(如service,dao等bean)--- DelegatingFilterProxy
- Web Filter中使用Spring注入bean elegatingFilterProxy
- Spring-shiro源码陶冶-DelegatingFilterProxy和ShiroFilterFactoryBean
- 在filter注入或者是得到spring托管的bean
- spring bean单例注入与用单例模式通过class.getinstance()区别?
- spring DelegatingFilterProxy管理过滤器
- Spring DelegatingFilterProxy
- 如何使用spring的autowire为servlet注入Bean
- Spring强制向servlet中注入bean的方法
- 通过代理的方式让Spring注入Servlet
- Spring DelegatingFilterProxy解析
- 拦截器通过Spring获取工厂类,注入bean对象
- Spring管理过滤器:org.springframework.web.filter.DelegatingFilterProxy
- 从头认识Spring-1.7 如何通过属性注入Bean?(1)-如何通过属性向对象注入值?
- 在servlet中注入spring容器中的bean
- spring--filter如何注入 spring管理的bean(54)