您的位置:首页 > 编程语言 > Java开发

struts2自定义拦截器

2013-02-27 22:55 134 查看
要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口。

Permission.java

package cn.itcast.interceptor;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class Permission implements Interceptor{

	/**
	 * @author wangfeng
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public void destroy() {
		
	}

	@Override
	public void init() {
		
	}

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		Object user = ActionContext.getContext().getSession().get("user");
		if(user != null)//如果user不为null,代表用户已经登录,允许执行action中的方法
		return invocation.invoke();
		ActionContext.getContext().put("message","你没有权限执行该操作");
		return "success";
	}
	
}


struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
    <constant name="struts.action.extension" value="do,action"/>
    <constant name="struts.multipart.maxSize" value="10701096"/>
    
	<package name="employee" namespace="/control/employee" extends="struts-default">
	<interceptors>
		<interceptor name="permission" class="cn.itcast.interceptor.Permission"/>
		<interceptor-stack name="permissionStack"> 
			<interceptor-ref name="defaultStack"></interceptor-ref>
			<interceptor-ref name="permission"></interceptor-ref>
		<!--	注意把系统的拦截器放在前面,自己定义的放在后面	-->
		</interceptor-stack>
	</interceptors>
		<global-results>
			<result name="success">/WEB-INF/page/message.jsp</result>
		</global-results>
		<action name="list_*" class="cn.itcast.action.HelloWorldAction" method="{1}">
			<interceptor-ref name="permissionStack"/>
		</action>
	</package>
</struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: