-
struts2拦截器获取session为空30
一个登录拦截器,主要用来判定是否登录,没有登录就跳转到login页面
拦截器@Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = (HttpServletRequest) ServletActionContext .getRequest(); HttpSession session = (HttpSession) request.getSession(); // Map session= invocation.getInvocationContext().getSession(); System.out.println("开始判定"); String path = request.getServletPath(); System.out.println("managerINFO 是否为空" + (session.getAttribute("managerInfo")!= null)); /* * 通过session中是否有managerInfo来拦截访问 * */ if (session.getAttribute("managerInfo") != null) { return invocation.invoke(); } /* * * 对没有session值的,对URI进行拦截 */ return (list != null && list.contains(path)) ? invocation.invoke() : Action.LOGIN; }
Action中的Login方法,失败跳转到login页面,成功返回SUCCESSSpublic String login() { if (StringUtils.isBlank(manager.getManagername()) || StringUtils.isBlank(manager.getPassword())) { return LOGIN; } // 查找登录名字,如果数据库有记录,则设置一个session值 if (managerService.login(manager)) { request.getSession().setAttribute("managerInfo", manager); System.out .println("Action中的managerINFO 是否为空" + (request.getSession().getAttribute("managerInfo") != null)); return SUCCESS; } return LOGIN; }
struts.xml的配置<!-- 管理员操作 --> <package name="admin" namespace="/admin" extends="struts-default"> <!-- 拦截器 --> <interceptors> <interceptor name="adminLogin" class="adminLoginInterceptor" /> <interceptor-stack name="admindefault"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="adminLogin" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="admindefault" /> <action name="admin_*" class="managerAction" method="{1}"> <result name="login" type="redirect">index.jsp</result> <result name="success">/WEB-INF/page/admin/index.jsp</result> <result name="top">/WEB-INF/page/admin/top.jsp</result> <result name="left">/WEB-INF/page/admin/left.jsp</result> <result name="list">/WEB-INF/page/admin/memberlist.jsp</result> </action> </package>
结果
[img]
[/img]
问题补充:两个Session都是HttpSession,不知道是呢有问题。现在我直接换成servlet的FILTER,
PS:抱怨一句,struts2用起来真的不爽
问题补充:看来是servlet问题,用了filter一样获取不了session2014年6月27日 10:48
2个答案 按时间排序 按投票排序
-
如果楼主不是最新版的struts2的话,恭喜你,你有个超级大漏洞,详见乌云。
其次
Session session=ActionInvocation.getInvocationContext().getSession();
拦截器只能对Action请求起作用,在Action的生命周期中,拦截器可以多次调用2014年6月30日 16:59
-
<action name="admin_*" class="managerAction" method="{1}">
<interceptor-ref name ="adminLogin" />
<interceptor-ref name ="defaultStack" />
<result name="login" type="redirect">index.jsp</result>
<result name="success">/WEB-INF/page/admin/index.jsp</result>
<result name="top">/WEB-INF/page/admin/top.jsp</result>
<result name="left">/WEB-INF/page/admin/left.jsp</result>
<result name="list">/WEB-INF/page/admin/memberlist.jsp</result>
</action>
实在xml文件中加上拦截器,不需要你在action类里面判断2014年6月27日 11:57
相关推荐
- 如果Session有效,从Session中获取 `SystemUser` 对象,如果对象为空,说明用户未登录,同样返回 "tologin"。否则,用户已登录,继续执行Action。 2. **设置Session值**: - 用户登录成功后,需要将登录信息...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
Struts2是一个强大的MVC框架,它通过使用拦截器(Interceptor)来实现业务逻辑与表现层的解耦,提供了一种灵活的扩展机制。在Struts2中,拦截器是AOP(面向切面编程)的一种实现,它可以监控、修改或增强方法调用的...
本文将深入探讨如何利用Struts2的拦截器实现简单的登录功能。拦截器是Struts2框架的核心组件之一,它允许我们在动作执行前后插入自定义逻辑,比如权限验证、日志记录等。 首先,我们来理解一下Struts2拦截器的工作...
### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...
总的来说,Struts2的拦截器机制为开发者提供了强大的功能,使得应用程序能够更好地管理复杂的业务流程和控制逻辑,同时保持代码的清晰和模块化。通过理解并熟练运用拦截器,我们可以构建更健壮、更安全的Web应用。
本文将详细解析Struts2中的拦截器(Interceptor)、CRUD操作以及Action的执行流程。 首先,让我们聚焦于Struts2的拦截器机制。拦截器是Struts2的核心组件,它们在Action执行前后运行,提供了AOP(面向切面编程)的...
Struts2的核心是拦截器(Interceptor),它可以处理用户的请求,并通过配置决定应用的行为。Struts2还支持多种插件,这些插件可以扩展框架的功能,满足不同的开发需求。 ### Request对象的理解与获取方式 #### ...
在Struts2中,拦截器扮演着至关重要的角色,它们允许我们在动作执行前后插入自定义逻辑,提升代码的可复用性和模块化。本篇文章将深入探讨如何使用Struts2的拦截器技术来实现页面检测和用户注册功能。 首先,我们...
4. **处理重定向**:在拦截器的`intercept()`方法中,当登录成功时,我们获取并返回存储的原始URL,Struts2会自动进行重定向操作。如果登录失败,则按正常流程返回Action的结果。 通过这样的设置,Struts2的拦截器...
本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现用户权限拦截。 首先,我们需要了解拦截器的工作原理。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截...
总的来说,Struts2拦截器为开发者提供了强大的功能,可以控制Action执行流程、处理异常、实现日志、国际化、模型驱动等多种需求,极大地提高了应用的灵活性和可维护性。正确理解和使用拦截器是掌握Struts2框架的关键...
拦截器是Struts2框架的一个核心特性,用于在Action执行前后进行额外的处理,比如日志记录、权限验证、性能监控等。在本案例中,我们将深入探讨如何在Struts2中自定义拦截器来实现用户非法登录的验证。 一、Struts2...
### Struts2拦截器实例——登录校验 #### 概述 在Web应用开发中,登录验证是一项重要的功能。为了确保只有已登录的用户才能访问特定的资源或页面,通常会采用拦截器来实现这一需求。本文档将详细介绍如何在Struts2...
### Struts 2 过滤器与拦截器的深入解析 #### 一、概述 在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地...
2. 注册拦截器:在Struts2的配置文件(如struts.xml)中,将这个拦截器添加到默认栈或者自定义拦截器栈中。 3. 检查登录状态:在`intercept()`方法中,可以通过Session或者其他方式检查用户是否已登录,未登录则返回...
Struts2 拦截器是其核心特性之一,它为开发者提供了强大的功能,用于处理请求、响应以及在业务逻辑执行前后进行各种操作。在 Struts2 框架中,拦截器扮演着中间件的角色,可以实现如权限检查、日志记录、事务管理等...
在Struts2中,拦截器扮演着核心角色,它们允许开发者实现一些通用的行为,如日志记录、权限检查、事务管理等,而无需将这些逻辑硬编码到每个动作类中。本实例主要关注的是如何使用Struts2拦截器进行权限判断。 首先...
Struts拦截器是Java Web开发中的一个重要概念,尤其在基于Struts2框架的应用中,它扮演着处理请求、验证输入、记录日志等关键角色。在这个"Struts拦截器案例——登陆"中,我们将深入探讨如何利用Struts拦截器实现...