首页 > 代码库 > struts2_11_自定义拦截器的实现

struts2_11_自定义拦截器的实现

1)登录界面的代码:

<%
	//设置session的值关键字为user
	request.getSession().setAttribute("user", "Enter");	
%>
 	用户已登录

2)退出界面的代码:

<%
  //取消session中设定的值,即user为null	request.getSession().removeAttribute("user");
 %>
	用户已经退出登录

3)拦截器类PermissionInterceptor的代码:

public class PermissionInterceptor implements Interceptor {

	public void destroy() {// 销毁时调用
	}

	public void init() {// 启用时调用
	}

	// 该方法返回视图名称
public String intercept(ActionInvocation invocation) throws Exception {

		// 取得user的内容
Object user = ActionContext.getContext().getSession().get("user");

		// 如果user不为null表示用户已经登录,允许执行Action
		if (user != null) {
			return invocation.invoke();// 调用Action
		}

  // 如果user为空,不调用Action,并且向session中存入字符串"你没有权		限执行该操作"
	ActionContext.getContext().put("message", "你没有权限执行该操作");
		return "success";
	}
}

3)struts.xml文件的配置:

<struts>
	<package name="packageName" namespace="/test" 
  extends="struts-default">

		<!--定义拦截器群 -->
		<interceptors>
			<interceptor name="permission" class="permissionInterceptor.PermissionInterceptor" />
			<!-- 自定义拦截器栈 -->
			<interceptor-stack name="permissionStack">
				<!--系统自定义拦截器栈,先于自定义拦截器引入 -->
				<interceptor-ref name="defaultStack" />
				<!--引入自定义拦截器 -->
				<interceptor-ref name="permission" />
			</interceptor-stack>
		</interceptors>

		<!-- 定义默认全局拦截器 
  <default-interceptor-ref name="permissionStack" /> 
  -->

		<!--定义全局视图 -->
		<global-results>
			<result name="success">/index.jsp</result>
		</global-results>

		<action name="hello*" 				
  class="interceptor.interceptorAction" method="{1}">
			<!-- 手动调用系统拦截器,当使用手动调用时该拦截器时,定义的					系统默认拦截器不会使用 -->
			<interceptor-ref name="permissionStack" />
			<!-- 当调用自定义拦截器时,只有将系统拦截器,先调用 采用同
  时使用自定义拦截器和系统拦截器 -->
			<interceptor-ref name="interceptorName" />
		</action>

	</package>
</struts>





struts2_11_自定义拦截器的实现