`
yangpanwww
  • 浏览: 621750 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2 拦截器—拦截action

阅读更多

        对于拦截器的基本使用这里我就懒得打字了,我这里就讲下如何用 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";
	}

	 

}

 

 

 

 

   嘿嘿。。。就这样了....简单点。。。。。

分享到:
评论
1 楼 lmh_java 2013-03-30  
谢谢分享!!

相关推荐

    struts2 拦截器实例

    struts2,Interceptor struts2拦截器实例,两套实例,一套是针对单个的action配置的,另一套实例是针对全局的action配置的拦截器interceptor

    struts2 拦截器写法

    Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

    Struts拦截器及token拦截器防止重复提交例子源码

    1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按...

    Struts2学习案例(拦截器)

    自己写的struts2小案例,DAO是用JPA开发,包含Action,mysq等,mvc模式

    struts2拦截器原理

    在action执行之前先进行拦截器的拦截处理,然后再执行action的execute方法,返回给拦截器,再对应相应result

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

    struts2.0描述了拦截器并有对应的例子,用struts实现crud 用法及例子,并介绍了struts2的action的流程 及请求过程

    Java Struts 实现拦截器

    Struts2的处理流程: • 客户端产生一个HttpServletRequest的请求,该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它主要是清理当前线程的ActionContext、Dispatcher,...

    struts2拦截器示例

    struts2拦截器可以控制action的执行顺序,这个小示例直接在Tomcat下配置完就可以发布

    struts2拦截器

    拦截器可以抽象出一部分代码可以用来完善原来的Action。同时可以减轻代码冗余,提高重用率。比如在登入一个页面时,如果要求用户密码、权限...更多&gt;&gt; 拦截器可以说相当于是个过滤器:就是把你不想要的或不想显示的内容...

    Struts2 拦截器详细配置过程

    Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法(init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一...

    struts2自定义拦截器配置心得

    strut2 配置自定义拦截器 包括struts2.xml 和 action对应的xml 以及拦截器 可能有点简单 但是基本配置都有

    struts2的自定义拦截器例子

    struts2的一个简单的拦截器例子

    struts2注解配置Action及拦截器几种不同方式写法对应的路径指向.docx

    struts2注解配置Action及拦截器几种不同方式写法对应的路径指向.docx

    Struts2(4)拦截器与验证框架

    在struts2框架中主配置文件struts-defalut.xml 文件中定义了大量的拦截器和拦截器栈。通过 default-interceptor-ref元素定义了 当前应用的默认拦截器栈,对用户的每次请求都需要调用拦截器栈中的每个拦截器来拦截...

    Struts2 国际化字符串 拦截器

    下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml中新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示: &lt;action name="VMHelloWorld" class="tutorial.HelloWorld"&gt;...

    理解拦截器用于在某个方法或字段被访

    谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链

    Struts2 in action中文版

    4.3 研究内建的Struts 2拦截器 67 4.3.1 工具拦截器 67 4.3.2 数据转移拦截器 67 4.3.3 工作流拦截器 69 4.3.4 其他拦截器 72 4.3.5 内建的拦截器栈 73 4.4 声明拦截器 74 4.4.1 声明独立的拦截器和拦截器栈 74 ...

    struts2 拦截器(AOP,面向切面编程)

    NULL 博文链接:https://cdxs2.iteye.com/blog/1931337

    struts2帮助文档

    struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2...

Global site tag (gtag.js) - Google Analytics