struts2 拦截器配置
CheckLoginInterceptor.java---拦截器具体实现类:
- package com.sunhoo.hcpms.struts2.action.interceptors;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionInvocation;
- import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
- import com.sunhoo.hcpms.struts2.action.LoginAction;
- /**
- * 拦截器 拦截没有登录的用户
- *
- * @author lyvee AbstractInterceptor 抽象类
- */
- public class CheckLoginInterceptor extends AbstractInterceptor {
- public static ActionContext ctx;
- public static Map sessionMap = null;
- String task = "userLogin";
- @Override
- public String intercept(ActionInvocation actionInvocation) throws Exception {
- ctx = actionInvocation.getInvocationContext();
- sessionMap = actionInvocation.getInvocationContext().getSession();
- HttpServletRequest request = (HttpServletRequest) ctx
- .get(ServletActionContext.HTTP_REQUEST);
- String user_session_key = "currentUser";// 默认的key
- System.out.println("begin check login interceptor");
- // not to intercepted on loginAction
- Object action = actionInvocation.getAction();
- if (action instanceof LoginAction) {
- System.out.println("exit check login,because this is loginAction");
- actionInvocation.invoke();
- return null;
- } else {
- String returnStr = "logout";
- if (null == request.getParameter("task") || "".equals(task)) {//如果task为空 则等于userLogin
- task = "userLogin";
- }else {
- task = request.getParameter("task");
- }if (task.equals("userLogin")) {// 根据不同的登录类型赋予user_session_key不同的value
- user_session_key = "currentUser";
- } else if (task.equals("expertLogin")) {
- user_session_key = "currentExpert";
- returnStr="expertlogout";
- } else if (task.equals("adminLogin")) {
- user_session_key = "currentAdmin";
- returnStr="adminLogout";
- }
- // check session
- @SuppressWarnings("unused")
- Object okk = sessionMap.get(user_session_key);
- String userName = (String) sessionMap.get(user_session_key);
- // if userName already login
- if (userName != null) {
- System.out.println("already login!");
- actionInvocation.invoke();
- } else {// no login
- System.out.println("no login.forward login page");
- return returnStr;
- }
- }
- return null;
- }
- }
struts.xml配置:
- <package name="default" namespace="/" extends="struts-default">
- <!-- 定义一个名为 checkLogin 的拦截器 -->
- <interceptors>
- <!-- 定义权限检查拦截器 类级别-->
- <interceptor name="checkLogin"
- class="com.sunhoo.hcpms.struts2.action.interceptors.CheckLoginInterceptor" />
- <!-- 定义一个权限检查的拦截器 方法级别 -->
- <interceptor name="methodInterceptor" class="com.sunhoo.hcpms.struts2.action.interceptors.MethodInterceptor">
- <param name="excludeMethods"></param>
- <param name="includeMethods">expertTree</param>
- </interceptor>
- <!-- 定义一个包含权限检查的拦截器栈 -->
- <interceptor-stack name="myDefaultStack">
- <!-- 定义拦截器栈包含checkLogin拦截器 -->
- <interceptor-ref name="checkLogin"></interceptor-ref>
- <interceptor-ref name="defaultStack"></interceptor-ref>
- <interceptor-ref name="methodInterceptor"></interceptor-ref>
- </interceptor-stack>
- </interceptors>
- <!-- 设置全局 全局默认的拦截器栈-->
- <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
- <global-results>
- <result name="logout" type="dispatcher">/login.jsp</result>
- <result name="succ">/client/succ.jsp</result>
- <result name="fail">/client/fail.jsp</result>
- <result name="expertlogout" type="redirect">/expert/login.jsp?errorMsg=${errorMsg}</result>
- <result name="adminLogout" type="redirect"></result>
- </global-results>
- <action name="login_*" class="LoginAction" method="{1}">
- <result name="index" type="redirect">
- /question_questionList?task=userLogin
- </result>
- <result name="expertQuestions" type="redirect">
- /expert_queryQuestions?task=expertLogin
- </result>
- <result name="go" type="redirect">
- expertList.jsp
- </result>
- <interceptor-ref name="myDefaultStack" />
- </action>
- <action name="register_*" class="RegisterAction" method="{1}">
- <interceptor-ref name="methodInterceptor" />
- </action>
- <action name="expert_*" class="ExpertAction" method="{1}">
- <result name="index">
- /expert/questionList.jsp?task=expertLogin
- </result>
- <result name="expertView">/client/expertList.jsp?task=expertLogin</result>
- </action>.............................
以上就是我的拦截器配置
我遇到的问题是 现在有三种不同类型的用户需要验证登录 1.专家 2.会员 3.专家。通过
- task = request.getParameter("task");
来判断登录用户的类型 然后取得不同的session值来进行拦截。 我不知道这种方法行不行。不是说其他的行不行 因为我已经实现了 并且成功进行了三种不同类型的用户登录来拦截 反正就是我心里觉得这么做不对,不知道JE上有没有人做过类似的 请问你们怎么做的。
struts2 拦截器配置的更多相关文章
- Struts2 拦截器配置以及实现
@(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...
- Struts2拦截器配置
1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AO ...
- Struts2拦截器配置实例
拦截器介绍 拦截器 的使用 ,源自Spring AOP(面向切面编程)思想 拦截器 采用 责任链 模式 * 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链. * 责任链每一个节 ...
- 转载 - Struts2拦截器配置
出处:http://blog.csdn.net/axin66ok/article/details/7321430 目录(?)[-] 理解拦截器 1 什么是拦截器 2 拦截器的实现原理 拦截器的配置 使 ...
- struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证
struts2.xml 内容 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...
- Struts2拦截器配置和使用
拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制. 说到拦截器interceptor,就会想到过滤器filter: 过滤器f ...
- Struts2 拦截器配置及使用
在我的项目中有个需求,实现记录用户操作的系统日志,基于这个功能我首先想到的是Struts 的拦截器.配置一个全部Action都会拦截的拦截,写一个公用的服务.每当用户发送请求到Action 就记录相应 ...
- struts2拦截器interceptor的三种配置方法
1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...
- struts2拦截器interceptor的配置方法及使用
转: struts2拦截器interceptor的配置方法及使用 (2015-11-09 10:22:28) 转载▼ 标签: it 365 分类: Struts2 NormalText Code ...
随机推荐
- rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
今天在同步数据的时候提示rsync: failed to set times on “xxxx”: Operation not permitted,一般来说要不是服务器时间不对或者权限没有设置好,下面 ...
- ios 精简日历
网上其他人写的日历类功能都很齐全,比较繁杂,对于想看看日历基础实现然后自己绘制日历的我来说不太方便,就自己整理了一个极精简的日历出来,大家看了之后应该能多少理解日历该怎么自定义,很简单. 我的小dem ...
- android studio - Indexing paused due to batch updated
傻逼的 Android Studio 又开抽疯了.... 日 打开项目就出现 Indexing paused due to batch updated ,并且半天没反应........ 解决办 ...
- 哈佛大学 Machine Learning
https://am207.github.io/2017/material.html https://am207.github.io/2017/topics.html https://am207.gi ...
- VLAN,GRE,VXLAN
https://www.cnblogs.com/charles1ee/p/6629009.html VLAN介绍 局域网LAN(多个机器连接一个Hub或者Switch),是一个广播域 VLAN:一台S ...
- DataTable 导入到Excel的最佳选择Npoi
今天项目需要,自己先写了个,但老是觉得不完美.百度搜索了一下,现在网上主要流传2大插件,1是myxls,2是Npoi,听说后者主要是中国牛人的杰作,而且非常的强大,所以我就来试用下. 只是试用下,具体 ...
- Silverlight-MEF-DEMO
“托管扩展性框架(Managed Extensibility Framework,简称MEF),是微软.NET框架下为提高应用和组件复用程度而推出的,用于使组件能够最大化的重用.使用MEF能够使静态编 ...
- Asp.Net模拟post提交数据方法
方法1: System.Net.WebClient WebClientObj = new System.Net.WebClient(); System.Collections.Specialized. ...
- 玩转Bootstrap(JS插件篇)-第1章 模态弹出框 :1-4 模态弹出框--结构分析
模态弹出框--结构分析 Bootstrap框架中的模态弹出框,分别运用了“modal”.“modal-dialog”和“modal-content”样式,而弹出窗真正的内容都放置在“modal-con ...
- 解决chrome extension无法下载的问题
由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...