您的位置:首页 > 编程语言 > Java开发

在Java Filter 中注入 Service方案一

2016-09-30 15:40 459 查看
新建一个类

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));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息