新建一个类
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.
*/
@Component
public 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));
}
}