目的:测试开发时,为了减少用户登入这个繁琐的登入验证,就用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(); }
相关推荐
Struts2自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...
Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...
自定义拦截器可以极大增强Struts2的功能,通过巧妙地组合和配置,可以实现灵活、高效的应用架构。学习并熟练掌握自定义拦截器的使用,对于提升Java Web开发能力是非常有帮助的。这篇博客文章可能详细讲解了以上步骤...
拦截器是Struts2的核心特性之一,它们在Action调用之前和之后执行,扮演着类似于过滤器的角色,允许我们实现诸如日志记录、权限检查、事务管理等通用功能。在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器...
Struts2自定义拦截器实现防止重复提交
简单的struts2自定义拦截器 很适合web初学者
1. **创建拦截器实现**:你需要实现`Interceptor`接口或继承`AbstractInterceptor`类来创建自定义拦截器。`Interceptor`接口提供了三个方法:`init()`(初始化)、`intercept()`(拦截处理)和`destroy()`(销毁)。...
本教程将详细介绍如何使用Struts2的拦截器来实现用户权限登录功能。 ### 一、拦截器的原理与作用 1. **原理**:拦截器工作在Action调用之前,它通过观察者模式实现,当一个请求到达时,会按照配置的顺序依次执行...
自定义拦截器是Struts2框架中扩展功能的重要手段,让我们深入探讨如何在Struts2中实现自定义拦截器。 首先,创建一个Web项目是基础步骤,这可以通过IDE如Eclipse或IntelliJ IDEA来完成。确保你的项目包含了Struts2...
本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...
在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合Servlet Filter进一步加强安全性。 首先,让我们理解Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念设计的,它们...
总的来说,“Struts2_自定义拦截器_用户权限验证”项目旨在教授开发者如何在Struts2环境中创建自定义拦截器,以实现用户权限验证,同时展示如何控制Action间的跳转。通过这个实践,开发者能够更好地理解和运用Struts...
在这个"struts2的自定义拦截器例子"中,我们将深入探讨如何创建和使用自定义拦截器。 首先,拦截器的本质是Java的面向切面编程(AOP)思想在Struts2中的体现。它们允许开发者在动作执行前后插入自定义的逻辑,例如...
通过下载的源代码,你可以看到具体的实现细节,包括`struts2.xml`和`web.xml`的配置,以及自定义拦截器类的代码。通过阅读和理解这些代码,你可以更好地掌握Struts2拦截器的工作原理,并在实际项目中灵活运用。 ...
- Struts2的配置通常基于`struts.xml`文件,它定义了Action类、结果类型、拦截器栈等信息。自定义Struts时,你需要创建自己的XML配置文件,比如`mystruts.xml`,这个文件将替代或扩展默认的配置,用来加载自定义的...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
自定义拦截器是扩展Struts2功能的重要手段,允许开发者根据项目需求实现特定的行为。 在Struts2中,拦截器是基于责任链模式实现的,它们按照注册的顺序依次执行。拦截器栈是Struts2中拦截器的集合,每个拦截器都...
在Struts2中,拦截器是实现业务逻辑和表示层解耦的重要工具,它们允许开发者在请求到达Action之前或之后执行特定的操作。在这个实例中,我们将探讨如何创建一个自定义拦截器来处理未登录用户的非法请求。 首先,...