`
ak23173969
  • 浏览: 29460 次
社区版块
存档分类
最新评论

struts2自定义拦截器与cookie整合实现用户免重复登入

阅读更多

目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用struts2做了个简单的struts2拦截器,涉及到了与cookie整合,具体的看代码

 

结构(两部份)=struts2.xml+自定义拦截器对象

 

配置文件

		<!-- 自定义拦截栈与拦截器 -->
		<interceptors>
			<interceptor name="visitInterceptor" class="cn.kjkj.web.ema.view.interceptor.VisitInterceptor" />
			<interceptor name="cookieInterceptor" class="cn.kjkj.web.ema.view.interceptor.CookieInterceptor" />
			<interceptor-stack name="MyStack">
				<interceptor-ref name="cookieInterceptor" />
				<interceptor-ref name="visitInterceptor" />
				<interceptor-ref name="paramsPrepareParamsStack" />
			</interceptor-stack>
		</interceptors>

		<!-- 设置默认拦截栈 -->
		<default-interceptor-ref name="MyStack" />

 

    自定义拦截器具体实现

import java.util.List;
import java.util.Map;

import javax.servlet.http.Cookie;
import org.springframework.beans.factory.annotation.Autowired;

import cn.kjkj.web.ema.domain.User;
import cn.kjkj.web.ema.service.UserService;
import cn.kjkj.web.ema.view.action.BaseAction;
import cn.kjkj.web.ema.view.action.LoginAction;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**登入时间缓存拦截器
 * */
@SuppressWarnings("serial")
public class CookieInterceptor extends AbstractInterceptor  {
	@Autowired
	private UserService userService;
	
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
	/**登入拦截*/
		Object action=invocation.getAction();  
		Map<String, Object> session=invocation.getInvocationContext().getSession();
		Cookie [] cookies= BaseAction.getRequest().getCookies();
		//System.out.println(cookies!=null);
		String account=null;
		String  password=null;
		if(!(action instanceof LoginAction)){ //判断是否正在登入
			if(session.get("usermessage")!=null){
				return invocation.invoke();
			}else{
				if(cookies!=null){
					
				for(Cookie c:cookies){
					if(c.getName().equalsIgnoreCase("username")){
					if(c!=null){
						account=c.getValue();
					}
					}else if(c.getName().equalsIgnoreCase("password")){
						if(c!=null){
							password=c.getValue();
						}
					}
				}
				if(account!=null&&password!=null){
					User u=new User(account, password);
					List<User> list=userService.checkMessage(u);
					if(list.size()==1){
						session.put("usermessage", list.get(0));
						return BaseAction.MAIN;
					}
					}
				}
			}
		}
		
		return invocation.invoke();
	}

 

 

 

2
0
分享到:
评论
1 楼 CoderDream 2013-12-01  
不错,感谢分享!

相关推荐

    struts2自定义拦截器配置心得

    Struts2自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...

    Struts2自定义拦截器实现防止重复提交

    Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...

    struts2 自定义拦截器.rar

    自定义拦截器可以极大增强Struts2的功能,通过巧妙地组合和配置,可以实现灵活、高效的应用架构。学习并熟练掌握自定义拦截器的使用,对于提升Java Web开发能力是非常有帮助的。这篇博客文章可能详细讲解了以上步骤...

    Struts2自定义拦截器

    拦截器是Struts2的核心特性之一,它们在Action调用之前和之后执行,扮演着类似于过滤器的角色,允许我们实现诸如日志记录、权限检查、事务管理等通用功能。在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器...

    Struts2自定义拦截器实现防止重复提交.pdf

    Struts2自定义拦截器实现防止重复提交

    struts2自定义拦截器

    简单的struts2自定义拦截器 很适合web初学者

    JSP 开发之Struts2内建自定义拦截器.docx

    1. **创建拦截器实现**:你需要实现`Interceptor`接口或继承`AbstractInterceptor`类来创建自定义拦截器。`Interceptor`接口提供了三个方法:`init()`(初始化)、`intercept()`(拦截处理)和`destroy()`(销毁)。...

    struts2 用拦截器 实现用户权限登录

    本教程将详细介绍如何使用Struts2的拦截器来实现用户权限登录功能。 ### 一、拦截器的原理与作用 1. **原理**:拦截器工作在Action调用之前,它通过观察者模式实现,当一个请求到达时,会按照配置的顺序依次执行...

    struts2自定义拦截器.pdf

    自定义拦截器是Struts2框架中扩展功能的重要手段,让我们深入探讨如何在Struts2中实现自定义拦截器。 首先,创建一个Web项目是基础步骤,这可以通过IDE如Eclipse或IntelliJ IDEA来完成。确保你的项目包含了Struts2...

    struts2的一个自定义拦截器小例子

    本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...

    使用struts2拦截器对登陆权限验证

    在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合Servlet Filter进一步加强安全性。 首先,让我们理解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念设计的,它们...

    Struts2_自定义拦截器_用户权限验证

    总的来说,“Struts2_自定义拦截器_用户权限验证”项目旨在教授开发者如何在Struts2环境中创建自定义拦截器,以实现用户权限验证,同时展示如何控制Action间的跳转。通过这个实践,开发者能够更好地理解和运用Struts...

    struts2的自定义拦截器例子

    在这个"struts2的自定义拦截器例子"中,我们将深入探讨如何创建和使用自定义拦截器。 首先,拦截器的本质是Java的面向切面编程(AOP)思想在Struts2中的体现。它们允许开发者在动作执行前后插入自定义的逻辑,例如...

    自定义拦截器struts2源代码

    通过下载的源代码,你可以看到具体的实现细节,包括`struts2.xml`和`web.xml`的配置,以及自定义拦截器类的代码。通过阅读和理解这些代码,你可以更好地掌握Struts2拦截器的工作原理,并在实际项目中灵活运用。 ...

    自定义struts(实现拦截器)

    - Struts2的配置通常基于`struts.xml`文件,它定义了Action类、结果类型、拦截器栈等信息。自定义Struts时,你需要创建自己的XML配置文件,比如`mystruts.xml`,这个文件将替代或扩展默认的配置,用来加载自定义的...

    Struts2拦截器实现权限控制demo

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

    Struts2_自定义拦截器

    自定义拦截器是扩展Struts2功能的重要手段,允许开发者根据项目需求实现特定的行为。 在Struts2中,拦截器是基于责任链模式实现的,它们按照注册的顺序依次执行。拦截器栈是Struts2中拦截器的集合,每个拦截器都...

    struts2自定义拦截器(处理用户未登录非法请求)

    在Struts2中,拦截器是实现业务逻辑和表示层解耦的重要工具,它们允许开发者在请求到达Action之前或之后执行特定的操作。在这个实例中,我们将探讨如何创建一个自定义拦截器来处理未登录用户的非法请求。 首先,...

Global site tag (gtag.js) - Google Analytics