java过滤器中调用spring管理的接口

来源:互联网 发布:php 接口开发框架 编辑:程序博客网 时间:2024/06/06 18:20

本实例是token实现,代码清单如下:


web.xml中添加如下配置

    <filter>        <!-- 注意下面这个过滤器名称要跟下面的spring-context.xml的相同 -->        <filter-name>appTokenfilter</filter-name>         <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>        <init-param>            <param-name>targetFilterLifecycle</param-name>            <param-value>true</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>appTokenfilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>


applicationContext.xml中添加

 <bean name="appTokenfilter" class="com.app.filter.TokenFilter" ></bean> 

过滤器

package com.app.filter;import java.io.IOException;import java.io.PrintWriter;import java.util.HashSet;import java.util.Map;import java.util.Set;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.collections.map.HashedMap;import org.springframework.beans.factory.annotation.Autowired;import com.google.gson.Gson;public class TokenFilter implements Filter {@Autowiredprivate TokenFilterInSpring tokenFilterInSpring;
@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}private static final Set<String> EXCEPT_URL_SET = new HashSet<String>();static {  EXCEPT_URL_SET.add("/login/login._login.html");EXCEPT_URL_SET.add("/login/login.login.html");}  @Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest)servletRequest;HttpServletResponse response=(HttpServletResponse)servletResponse;
tokenFilterInSpring.filter(request,servletResponse,chain);
}@Overridepublic void destroy() {}}

package com.app.filter;import java.io.IOException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import javax.annotation.Resource;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.googlecode.cswish.struts.spring.SafeGenericService;import com.lan360.app.login.MemberTokenService;import com.lan360.core.user.MemberToken;@Component("tokenFilterInSpring")  /*注意名称跟上面过滤器中注入的名称相同*/public class TokenFilterInSpring {@Autowiredprivate SafeGenericService genericService;@Resourceprivate MemberTokenService memberTokenService;    public String filter(HttpServletRequest request,ServletResponse servletResponse,FilterChain chain){    HttpServletResponse response = (HttpServletResponse)servletResponse;    //过滤处理    }}




原创粉丝点击