在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
- 在Java Filter 中注入 Service方案一
- 在Filter中注入Service
- 如何在Java的Filter中注入Service???
- 在如何在Filter 中注入
- 如何在filter中注入bean
- 如何在filter中注入bean
- listener或者filter注入service
- Filter里面注入Service方法
- java 静态工具类中注入service
- Filter中注入spring
- 在servlet注入service
- filter注入service报空指针
- springmvc想在filter中调用service层
- web中filter需要注入bean(如service,dao等bean)--- DelegatingFilterProxy
- quartz中注入Service
- 如何在utils工具类中注入mapper service
- SSM+shiro 在realm中出现注解注入service失败
- SpringBoot在自定义类中注入Service为null
- sql server如何在用sql创建表时给表名以及列名添加注释?
- Java命名规则
- unity3d shader学习(1)
- 加密算法
- Xcode中的Info.plist字段列表详解
- 在Java Filter 中注入 Service方案一
- Swift 获取屏幕宽高
- 常用的开源jar包
- 【C# 工具类】将DataTable转化为 List集合/对象
- 高质量代码
- bat中的for
- 在一个app内调用另一个app的指定的activity
- Spring事务管理机制的实现原理-动态代理
- 使用Jmeter 做接口测试