在Java Filter 中注入 Service方案一

来源:互联网 发布:单片机有两个主程序 编辑:程序博客网 时间:2024/05/14 10:32

新建一个类

package com.fulihui.yiyuanservice.common.util;import javax.annotation.PostConstruct;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ApplicationObjectSupport;import org.springframework.stereotype.Component;/** * Spring ApplicationContext工具,类通过 {@link Component}注解注入到bean容器, * 初始化时调用init方法,将ApplicationContext赋值到静态变量instance上。 * @author Created by Willard.Hu on 2016/8/12 0012. */@Componentpublic class ApplicationContextUtil extends ApplicationObjectSupport {    private static ApplicationContext instance;    public static ApplicationContext getContext() {        return instance;    }    @PostConstruct    private void init() {        instance = getApplicationContext();    }}

web.xml配置

 <!--配置过滤器-->       <filter>          <filter-name>AuthenticationLoginFliter</filter-name>          <filter-class>com.fulihui.yiyuanservice.web.filter.AuthenticationLoginFliter</filter-class>          <init-param>               <param-name>forceEncoding</param-name>               <param-value>true</param-value>            </init-param>            <init-param>               <param-name>encoding</param-name>               <param-value>UTF-8</param-value>            </init-param>       </filter><!--      映射过滤器 -->      <filter-mapping>          <filter-name>AuthenticationLoginFliter</filter-name>         <!--  “/*”表示拦截所有的请求 -->          <url-pattern>/*</url-pattern>      </filter-mapping> 

java代码

package com.fulihui.yiyuanservice.web.filter;import java.io.IOException;import javax.inject.Inject;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 javax.servlet.http.HttpSession;import org.apache.commons.lang.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.ApplicationContext;import com.fulihui.yiyuanservice.biz.shard.AuthBizManager;import com.fulihui.yiyuanservice.common.util.AppConfig;import com.fulihui.yiyuanservice.common.util.ApplicationContextUtil;import com.fulihui.yiyuanservice.common.util.SessionContext;import com.fulihui.yiyuanservice.common.util.SessionUtil;import com.fulihui.yiyuanservice.domain.ExternalUser;/** * 登陆认证  * @time 2016-9-30 10:50  * @author hongwang.zhang * */public class AuthenticationLoginFliter implements Filter  {    /* logger */    private static final Logger log = LoggerFactory.getLogger(AuthenticationLoginFliter.class);    private AuthBizManager      authBizManager;    private AppConfig           appConfig;    @Override    public void init(FilterConfig filterConfig) throws ServletException {        // TODO Auto-generated method stub        ApplicationContext context = ApplicationContextUtil.getContext();        appConfig = context.getBean(AppConfig.class);        authBizManager = context.getBean(AuthBizManager.class);        System.out.println("初始化 来咯。。。。。。。。。。。。。。");    }    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)                                                                                             throws IOException,                                                                                             ServletException {        try {            HttpServletRequest  httpRequest=(HttpServletRequest)request;             HttpServletResponse httpResponse=(HttpServletResponse)response;            SessionUtil.setSession(httpRequest.getSession());            HttpSession session = httpRequest.getSession();            String path = httpRequest.getServletPath();            if (session.getAttribute("user") == null                    || session.getAttribute("userId") == null){                   //判断是否为拦截页面true 放行                    if (!authBizManager.needAuth(path)) {                        String userId = authBizManager.getUserId(httpRequest);                        if(StringUtils.isNotEmpty(userId)){                             ExternalUser user = authBizManager.getUserInfo(httpRequest, userId);                        }else{                            chain.doFilter(httpRequest, httpResponse);                        }                    } else {                        String userId = authBizManager.getUserId(httpRequest);                        if(StringUtils.isEmpty(userId)){                            String redirect = authBizManager.getRedirectPath(httpRequest);                            httpResponse.sendRedirect(redirect);                        }else{                             ExternalUser user = authBizManager.getUserInfo(httpRequest, userId);                             if(user==null){                                 Modeladnview(httpRequest,httpResponse);                                 chain.doFilter(httpRequest, httpResponse);                             }                        }                    }            }else {                Modeladnview(httpRequest,httpResponse);                chain.doFilter(httpRequest, httpResponse);              /*  // 获取信息                String userId =session.getAttribute("userId")==null?"":session.getAttribute("userId").toString();                ExternalUser user = authBizManager.getUserInfo(httpRequest,                        userId);                if(user==null){                                     Modeladnview(httpRequest,httpResponse);                    chain.doFilter(httpRequest, httpResponse);                }else{                    Modeladnview(httpRequest,httpResponse);                    chain.doFilter(httpRequest, httpResponse);                }*/            }            /* String userId = authBizManager.getUserId(httpRequest);            if(StringUtils.isEmpty(userId)){                String redirect = authBizManager.getRedirectPath(httpRequest);                httpResponse.sendRedirect(redirect);            }*/        } catch (Exception e) {            e.printStackTrace();        }    }    public void Modeladnview(HttpServletRequest httpServletRequest,HttpServletResponse httpResponse){        ExternalUser user = SessionContext.getExternalUser(httpServletRequest);        String isLogin = null;        if (user != null) {            if (StringUtils.isEmpty(user.getUserId())) {                isLogin = "0";            } else {                isLogin = "1";            }        } else {            isLogin = "0";        }        httpServletRequest.setAttribute("isLogin", isLogin);        httpServletRequest.setAttribute("curUser", user);    }    @Override    public void destroy() {        // TODO Auto-generated method stub    }    public static void main(String[] args) {        System.out.println(StringUtils.isEmpty(null));    }}
0 0