0 0

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页面,成功返回SUCCESSS
	public 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一样获取不了session
2014年6月27日 10:48
  • 大小: 22.9 KB

2个答案 按时间排序 按投票排序

0 0

如果楼主不是最新版的struts2的话,恭喜你,你有个超级大漏洞,详见乌云。
其次
Session session=ActionInvocation.getInvocationContext().getSession();
拦截器只能对Action请求起作用,在Action的生命周期中,拦截器可以多次调用

2014年6月30日 16:59
0 0

<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

相关推荐

    简单的struts2拦截器利用session拦截用户登录.docx

    - 如果Session有效,从Session中获取 `SystemUser` 对象,如果对象为空,说明用户未登录,同样返回 "tologin"。否则,用户已登录,继续执行Action。 2. **设置Session值**: - 用户登录成功后,需要将登录信息...

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    创建自己struts2拦截器

    Struts2是一个强大的MVC框架,它通过使用拦截器(Interceptor)来实现业务逻辑与表现层的解耦,提供了一种灵活的扩展机制。在Struts2中,拦截器是AOP(面向切面编程)的一种实现,它可以监控、修改或增强方法调用的...

    利用struts2拦截器做的简单登录

    本文将深入探讨如何利用Struts2的拦截器实现简单的登录功能。拦截器是Struts2框架的核心组件之一,它允许我们在动作执行前后插入自定义逻辑,比如权限验证、日志记录等。 首先,我们来理解一下Struts2拦截器的工作...

    struts2拦截器和验证框架(适合初学者-经藏版)

    ### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...

    struts2 拦截器实现登录控制

    总的来说,Struts2的拦截器机制为开发者提供了强大的功能,使得应用程序能够更好地管理复杂的业务流程和控制逻辑,同时保持代码的清晰和模块化。通过理解并熟练运用拦截器,我们可以构建更健壮、更安全的Web应用。

    struts2.0拦截器、crud例子与用法

    本文将详细解析Struts2中的拦截器(Interceptor)、CRUD操作以及Action的执行流程。 首先,让我们聚焦于Struts2的拦截器机制。拦截器是Struts2的核心组件,它们在Action执行前后运行,提供了AOP(面向切面编程)的...

    struts2中request和session的获取

    Struts2的核心是拦截器(Interceptor),它可以处理用户的请求,并通过配置决定应用的行为。Struts2还支持多种插件,这些插件可以扩展框架的功能,满足不同的开发需求。 ### Request对象的理解与获取方式 #### ...

    运用struts2技术的拦截器实现的页面检测和用户注册

    在Struts2中,拦截器扮演着至关重要的角色,它们允许我们在动作执行前后插入自定义逻辑,提升代码的可复用性和模块化。本篇文章将深入探讨如何使用Struts2的拦截器技术来实现页面检测和用户注册功能。 首先,我们...

    Struts通过拦截器实现登录后跳转到登录前页面

    4. **处理重定向**:在拦截器的`intercept()`方法中,当登录成功时,我们获取并返回存储的原始URL,Struts2会自动进行重定向操作。如果登录失败,则按正常流程返回Action的结果。 通过这样的设置,Struts2的拦截器...

    struts2实现拦截器、

    本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现用户权限拦截。 首先,我们需要了解拦截器的工作原理。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序形成一个拦截...

    Struts2拦截器及其用法详细说明

    总的来说,Struts2拦截器为开发者提供了强大的功能,可以控制Action执行流程、处理异常、实现日志、国际化、模型驱动等多种需求,极大地提高了应用的灵活性和可维护性。正确理解和使用拦截器是掌握Struts2框架的关键...

    struts2拦截器

    拦截器是Struts2框架的一个核心特性,用于在Action执行前后进行额外的处理,比如日志记录、权限验证、性能监控等。在本案例中,我们将深入探讨如何在Struts2中自定义拦截器来实现用户非法登录的验证。 一、Struts2...

    Struts2拦截器实例.docx

    ### Struts2拦截器实例——登录校验 #### 概述 在Web应用开发中,登录验证是一项重要的功能。为了确保只有已登录的用户才能访问特定的资源或页面,通常会采用拦截器来实现这一需求。本文档将详细介绍如何在Struts2...

    Struts 2 过滤器和拦截器的区别

    ### Struts 2 过滤器与拦截器的深入解析 #### 一、概述 在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地...

    Struts2 拦截器 手动验证 或 自动验证 后台登录验证 源码

    2. 注册拦截器:在Struts2的配置文件(如struts.xml)中,将这个拦截器添加到默认栈或者自定义拦截器栈中。 3. 检查登录状态:在`intercept()`方法中,可以通过Session或者其他方式检查用户是否已登录,未登录则返回...

    struts2拦截器总结

    Struts2 拦截器是其核心特性之一,它为开发者提供了强大的功能,用于处理请求、响应以及在业务逻辑执行前后进行各种操作。在 Struts2 框架中,拦截器扮演着中间件的角色,可以实现如权限检查、日志记录、事务管理等...

    struts2拦截器权限判断实例

    在Struts2中,拦截器扮演着核心角色,它们允许开发者实现一些通用的行为,如日志记录、权限检查、事务管理等,而无需将这些逻辑硬编码到每个动作类中。本实例主要关注的是如何使用Struts2拦截器进行权限判断。 首先...

    Struts拦截器案例——登陆

    Struts拦截器是Java Web开发中的一个重要概念,尤其在基于Struts2框架的应用中,它扮演着处理请求、验证输入、记录日志等关键角色。在这个"Struts拦截器案例——登陆"中,我们将深入探讨如何利用Struts拦截器实现...

Global site tag (gtag.js) - Google Analytics