CheckLoginInterceptor.java---拦截器具体实现类:

  1. package com.sunhoo.hcpms.struts2.action.interceptors;
  2. import java.util.Map;
  3. import javax.servlet.http.HttpServletRequest;
  4. import org.apache.struts2.ServletActionContext;
  5. import com.opensymphony.xwork2.ActionContext;
  6. import com.opensymphony.xwork2.ActionInvocation;
  7. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
  8. import com.sunhoo.hcpms.struts2.action.LoginAction;
  9. /**
  10. * 拦截器 拦截没有登录的用户
  11. *
  12. * @author lyvee AbstractInterceptor 抽象类
  13. */
  14. public class CheckLoginInterceptor extends AbstractInterceptor {
  15. public static ActionContext ctx;
  16. public static Map sessionMap = null;
  17. String task = "userLogin";
  18. @Override
  19. public String intercept(ActionInvocation actionInvocation) throws Exception {
  20. ctx = actionInvocation.getInvocationContext();
  21. sessionMap = actionInvocation.getInvocationContext().getSession();
  22. HttpServletRequest request = (HttpServletRequest) ctx
  23. .get(ServletActionContext.HTTP_REQUEST);
  24. String user_session_key = "currentUser";// 默认的key
  25. System.out.println("begin check login interceptor");
  26. // not to intercepted on loginAction
  27. Object action = actionInvocation.getAction();
  28. if (action instanceof LoginAction) {
  29. System.out.println("exit check login,because this is loginAction");
  30. actionInvocation.invoke();
  31. return null;
  32. } else {
  33. String returnStr = "logout";
  34. if (null == request.getParameter("task") || "".equals(task)) {//如果task为空 则等于userLogin
  35. task = "userLogin";
  36. }else {
  37. task = request.getParameter("task");
  38. }if (task.equals("userLogin")) {// 根据不同的登录类型赋予user_session_key不同的value
  39. user_session_key = "currentUser";
  40. } else if (task.equals("expertLogin")) {
  41. user_session_key = "currentExpert";
  42. returnStr="expertlogout";
  43. } else if (task.equals("adminLogin")) {
  44. user_session_key = "currentAdmin";
  45. returnStr="adminLogout";
  46. }
  47. // check session
  48. @SuppressWarnings("unused")
  49. Object okk = sessionMap.get(user_session_key);
  50. String userName = (String) sessionMap.get(user_session_key);
  51. // if userName already login
  52. if (userName != null) {
  53. System.out.println("already login!");
  54. actionInvocation.invoke();
  55. } else {// no login
  56. System.out.println("no login.forward login page");
  57. return returnStr;
  58. }
  59. }
  60. return null;
  61. }
  62. }

struts.xml配置:

  1. <package name="default" namespace="/" extends="struts-default">
  2. <!-- 定义一个名为 checkLogin 的拦截器 -->
  3. <interceptors>
  4. <!-- 定义权限检查拦截器 类级别-->
  5. <interceptor name="checkLogin"
  6. class="com.sunhoo.hcpms.struts2.action.interceptors.CheckLoginInterceptor" />
  7. <!-- 定义一个权限检查的拦截器 方法级别 -->
  8. <interceptor name="methodInterceptor" class="com.sunhoo.hcpms.struts2.action.interceptors.MethodInterceptor">
  9. <param name="excludeMethods"></param>
  10. <param name="includeMethods">expertTree</param>
  11. </interceptor>
  12. <!-- 定义一个包含权限检查的拦截器栈 -->
  13. <interceptor-stack name="myDefaultStack">
  14. <!-- 定义拦截器栈包含checkLogin拦截器 -->
  15. <interceptor-ref name="checkLogin"></interceptor-ref>
  16. <interceptor-ref name="defaultStack"></interceptor-ref>
  17. <interceptor-ref name="methodInterceptor"></interceptor-ref>
  18. </interceptor-stack>
  19. </interceptors>
  20. <!-- 设置全局 全局默认的拦截器栈-->
  21. <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
  22. <global-results>
  23. <result name="logout" type="dispatcher">/login.jsp</result>
  24. <result name="succ">/client/succ.jsp</result>
  25. <result name="fail">/client/fail.jsp</result>
  26. <result name="expertlogout" type="redirect">/expert/login.jsp?errorMsg=${errorMsg}</result>
  27. <result name="adminLogout" type="redirect"></result>
  28. </global-results>
  29. <action name="login_*" class="LoginAction" method="{1}">
  30. <result name="index" type="redirect">
  31. /question_questionList?task=userLogin
  32. </result>
  33. <result name="expertQuestions" type="redirect">
  34. /expert_queryQuestions?task=expertLogin
  35. </result>
  36. <result name="go" type="redirect">
  37. expertList.jsp
  38. </result>
  39. <interceptor-ref name="myDefaultStack" />
  40. </action>
  41. <action name="register_*" class="RegisterAction" method="{1}">
  42. <interceptor-ref name="methodInterceptor" />
  43. </action>
  44. <action name="expert_*" class="ExpertAction" method="{1}">
  45. <result name="index">
  46. /expert/questionList.jsp?task=expertLogin
  47. </result>
  48. <result name="expertView">/client/expertList.jsp?task=expertLogin</result>
  49. </action>.............................

以上就是我的拦截器配置 
         我遇到的问题是  现在有三种不同类型的用户需要验证登录 1.专家 2.会员 3.专家。通过

  1. task = request.getParameter("task");

来判断登录用户的类型 然后取得不同的session值来进行拦截。  我不知道这种方法行不行。不是说其他的行不行 因为我已经实现了 并且成功进行了三种不同类型的用户登录来拦截 反正就是我心里觉得这么做不对,不知道JE上有没有人做过类似的 请问你们怎么做的。

struts2 拦截器配置的更多相关文章

  1. Struts2 拦截器配置以及实现

    @(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...

  2. Struts2拦截器配置

    1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AO ...

  3. Struts2拦截器配置实例

    拦截器介绍 拦截器 的使用 ,源自Spring AOP(面向切面编程)思想 拦截器 采用 责任链 模式 * 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链. * 责任链每一个节 ...

  4. 转载 - Struts2拦截器配置

    出处:http://blog.csdn.net/axin66ok/article/details/7321430 目录(?)[-] 理解拦截器 1 什么是拦截器 2 拦截器的实现原理 拦截器的配置 使 ...

  5. struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证

    struts2.xml 内容 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...

  6. Struts2拦截器配置和使用

    拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制. 说到拦截器interceptor,就会想到过滤器filter: 过滤器f ...

  7. Struts2 拦截器配置及使用

    在我的项目中有个需求,实现记录用户操作的系统日志,基于这个功能我首先想到的是Struts 的拦截器.配置一个全部Action都会拦截的拦截,写一个公用的服务.每当用户发送请求到Action 就记录相应 ...

  8. struts2拦截器interceptor的三种配置方法

    1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...

  9. struts2拦截器interceptor的配置方法及使用

    转: struts2拦截器interceptor的配置方法及使用 (2015-11-09 10:22:28) 转载▼ 标签: it 365 分类: Struts2  NormalText Code  ...

随机推荐

  1. [WebGL入门]十八,利用索引缓存来画图

    注:文章译自http://wgld.org/.原作者杉本雅広(doxas),文章中假设有我的额外说明.我会加上[lufy:].另外,鄙人webgl研究还不够深入,一些专业词语,假设翻译有误,欢迎大家指 ...

  2. 如何设置Linux swap分区

    看到不少朋友问linux下swap分区的问题,收集到一篇 不错的文章 ,分享下.什么是Swap?Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器 ...

  3. 【Unity】6.4 Transform--移动、旋转和缩放游戏对象

    分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 Unity引擎提供了丰富的组件和类库,为游戏开发提供了非常大的便利,熟练掌握和使用这些API,对于游戏开发的效率提高很重 ...

  4. 深入理解Linux内核-回收页框

    Linux 系统在为用户态进程和内核分配动态内存的时候,所作的检查是马马虎虎的对内核使用的许多磁盘高速缓存和内存高速缓存大小也同样不作限制. 页框回收算法(PFRA):1.在所有内存使用完之前,就必须 ...

  5. VS Code插件Vue2 代码补全工具

    一.简介 此扩展将Vue 2代码片段和语法突出显示添加到Visual Studio代码中. 这个插件基于最新的Vue官方语法高亮文件添加了语法高亮,并且依据Vue 2的API添加了代码片段. 支持语言 ...

  6. 《Android源代码设计模式解析》读书笔记——Android中你应该知道的设计模式

    断断续续的,<Android源代码设计模式解析>也看了一遍.书中提到了非常多的设计模式.可是有部分在开发中见到的几率非常小,所以掌握不了也没有太大影响. 我认为这本书的最大价值有两点,一个 ...

  7. 不忘初心,回归本质 .net core

    static void Main(string[] args) { ; object j = i;//装箱 就是把值类型转换成引用类型 int k = (int)j;//拆箱 就是把引用类型转换成值类 ...

  8. ex:Could not load file or assembly 'System.Web.Helpers, Version=2.0.0.0, Culture=neutral, . 系统找不到指定的文件。

    今天写的是一个小程序,采用webfrom 形式,.netframework4.0 项目中调用了System.Web.Helpers下的Json方法. 在本地测试没问题,结果搭建到服务器上,死活运行不正 ...

  9. hive查询遇到java.io.EOFException: Unexpected end of input stream错误

    hive查询遇到java.io.EOFException: Unexpected end of input stream错误 原因基本上有两个: 空文件 不完整的文件 解决办法: 删除对应文件- 参考 ...

  10. 6款漂亮HTML CSS样式用户留言表单

    如今我们的网站.页面更加需要注重细节,不论是字体的样式.还是图片的分辨率清晰度都会影响到用户的访问体验和PV,以及用户以后是否会回访我们的网站/博客.如果有时间的时候,老左也会浏览和阅读相关的前端网站 ...