对于拦截器的基本使用这里我就懒得打字了,我这里就讲下如何用 Struts2 拦截器 拦截action。这是我个人的想法,如果有什么不对的,或者你们有什么更好的方法。请多多留言!
拦截器的默认拦截的方法参数是:includeMethods(要拦截的方法) 和 excludeMethods(不需要拦截的方法),多个的时候,用逗号分开;
但,现实中,有些时候。我们还是需要设置有3 个类的所有方法都不需要拦截和4个方法不需要拦截,那么如果使用excludeMethods 的话,就得把 3 个类中的所有方法都列出来。当然如果少就列列就算了,如果多呢。不就麻烦了。所以。下面我们将讨论如何拦截 类 这个级别的请求。
一、在配置文件中修改下:
<interceptors>
<interceptor name="mainSession" class="net.zy.interceptor.MainSessionInterceptor"></interceptor>
<interceptor-stack name="mainSessionStack">
<interceptor-ref name="mainSession">
<param name="excludeMethods">login,logOut</param>
<!-- 自定义参数 excludeActions -->
<param name="excludeActions">sms_,main_</param>
</interceptor-ref>
<!-- 默认拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 设置未默认的拦截器 -->
<default-interceptor-ref name="mainSessionStack"></default-interceptor-ref>
在配置文件中,添加自定义参数。excludeActions
二、在拦截器类中,添加 excludeActions 成员变量,并且提供get,set方法,struts2会自定给我们set参数进来。
package net.zy.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import net.zy.models.SysUsers;
import net.zy.models.VipBean;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
/**
* 拦截器
*
* @author 妞见妞爱
*/
public class MainSessionInterceptor implements Interceptor{
private String excludeActions;
private String excludeMethods;
public String getExcludeMethods() {
return excludeMethods;
}
public void setExcludeMethods(String excludeMethods) {
this.excludeMethods = excludeMethods;
}
public String getExcludeActions() {
return excludeActions;
}
public void setExcludeActions(String excludeActions) {
this.excludeActions = excludeActions;
}
public void destroy() {
// TODO Auto-generated method stub
}
public void init() {
// TODO Auto-generated method stub
}
public String intercept(ActionInvocation invocation) throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
// 获取请求的action名称
String actionName = invocation.getInvocationContext().getName();
// 获取action后附带参数
//Map parameters = invocation.getInvocationContext().getParameters();
//配置文件中 排除的 action
String [] excludeAction = excludeActions.split(",");
for (int i = 0; i < excludeAction.length; i++) {
if (actionName.startsWith(excludeAction[i])) {
return invocation.invoke();
}
}
//配置文件中 排除的 Method
String [] excludeMethod = excludeMethods.split(",");
for (int i = 0; i < excludeMethod.length; i++) {
if (actionName.endsWith(excludeMethod[i])) {
return invocation.invoke();
}
}
SysUsers users = (SysUsers) session.getAttribute("user");
if (users != null) {
return invocation.invoke();
}
return "Timeout";
}
}
嘿嘿。。。就这样了....简单点。。。。。
分享到:
相关推荐
在Struts2中,这些处理逻辑被封装在独立的类中,当请求到达Action之前,拦截器会按照预定义的顺序执行,执行完后再继续进行Action处理,最后返回结果。拦截器可以用于日志记录、权限验证、性能监控等多种场景。 **...
2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action执行,那么Action的结果将被传递到下一个拦截器,直到整个链执行完毕。 ### 二、...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...
- **拦截器的核心功能**:Struts2拦截器可以动态地拦截发送到指定Action的请求,并在Action执行前后插入自定义的逻辑处理。 - **代码重用原则**:通过拦截器机制,可以将多个Action中需要重复指定的代码提取出来,...
3. 在调用Action之前,Struts2会按照配置的顺序依次执行拦截器链。 4. 每个拦截器可以决定是否允许请求继续传递到下一个拦截器或直接终止。例如,一个登录拦截器可能会检查用户是否已登录,如果未登录则跳转到登录...
在Struts2的核心配置文件`struts.xml`中,我们可以定义拦截器链,指定哪些拦截器应用于哪些Action。 权限控制是web应用中不可或缺的一部分,它可以防止未经授权的用户访问特定资源。在Struts2中,我们可以通过拦截...
Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活地控制程序流程,提高代码的复用性。 #### 二、Struts2拦截器...
拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...
当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器或直接返回响应。 创建一个简单的Struts2拦截器,你需要遵循以下步骤: 1. 创建拦截...
2. **拦截**:当一个请求到达Action时,Struts2会根据配置的拦截器栈顺序,先调用每个拦截器的`intercept()`方法,然后才执行Action的业务逻辑。 3. **后处理**:Action执行完毕后,Struts2会逆序遍历拦截器栈,调用...
在Struts2中,拦截器扮演着至关重要的角色,它们是实现MVC(Model-View-Controller)架构的关键组件之一。拦截器允许开发者在动作执行前后插入自定义逻辑,比如日志记录、权限检查、数据验证等,而无需修改核心业务...
当一个请求到来时,Struts2会按照配置的顺序依次执行这些拦截器,最后调用Action方法。 要实现拦截不文明字迹,我们首先需要创建一个自定义的拦截器类。这个类需要继承自`...
首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的一个概念,在Struts2中,拦截器是基于Java的动态代理机制实现的。它们是一系列实现了`Interceptor`接口的类,可以在Action执行前后插入额外的行为。这些行为...
在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...
当请求到达Action时,Struts2会调用这个链上的所有拦截器,然后才执行实际的动作方法。通过在拦截器中实现权限验证,我们可以在用户尝试访问受保护资源之前检查其登录状态。 接下来,我们创建一个自定义的登录拦截...
当一个请求到达时,Struts2会按照配置的拦截器栈顺序逐个调用这些拦截器,然后执行Action,最后再按逆序返回。拦截器可以进行如权限验证、日志记录、性能监控等多种操作。 2. **创建自定义拦截器** 创建自定义拦截...
然而,Struts2从2.1版本开始引入了拦截器注解,使得无需在配置文件中显式声明拦截器,就可以直接在Action类或方法上使用注解来应用拦截器。这种方式更简洁,减少了配置工作量,提高了代码可读性。 以下是几种常见的...
2. 注册拦截器:在`struts.xml`配置文件中声明拦截器,并为它指定一个唯一的名称,以便在Action配置中引用。 3. 配置拦截器栈:Struts2使用拦截器栈的概念,即将多个拦截器组织成一个栈,按照栈的顺序依次执行。在`...
Struts2的拦截器是一种AOP(面向切面编程)的概念,它在Action调用前后执行特定的逻辑,如日志记录、权限验证、数据校验等。拦截器通过配置在struts.xml或struts-plugin.xml文件中,按照定义的顺序进行调用。每个...
在`src`目录下,可能包含了Struts2项目的源代码,包括Action类、拦截器类以及其他业务逻辑相关的Java类。通过分析这些源代码,我们可以了解自定义拦截器的实现方式以及与默认拦截器如何协同工作。 而`WebRoot`目录...