Struts2自定义Interceptor

来源:互联网 发布:在淘宝怎么图片搜索 编辑:程序博客网 时间:2024/05/04 07:28

1.继承类AbstractInterceptor

import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LoginInterceptor extends AbstractInterceptor {@Overridepublic String intercept(ActionInvocation invocation) throws Exception {Action action = (Action) invocation.getAction();ActionContext context = ActionContext.getContext();HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);if (request.getSession().getAttribute("userName") == null|| request.getSession().getAttribute("userName").equals("")) {//result name//struts 根据result name跳转return "login";}return invocation.invoke();}}

2,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.devMode" value="true" /><constant name="struts.i18n.encoding" value="UTF-8"></constant><package name="basicstruts2" extends="struts-default"><interceptors><interceptor name="loginInterceptor" class="com.unei.interceptor.LoginInterceptor"/><interceptor-stack name="checkStack"><interceptor-ref name="loginInterceptor"/><interceptor-ref name="defaultStack"/></interceptor-stack></interceptors>        <action name="index" class="com.unei.Action.IndexAction"method="Index"> <result name="success">/jsp/index.jsp</result><result name="login" type="redirect">/admin/login.jsp</result><interceptor-ref name="checkStack"></interceptor-ref></action><action name="hello" class="com.unei.Action.HelloAction" method="hello"><result name="success">/jsp/hello.jsp</result></action><action name="admin_*" class="com.unei.Action.AdminAction" method="{1}">    <result name="success">/jsp/json.jsp</result></action></package></struts>

配置interceptor:

<interceptors><interceptor name="loginInterceptor" class="com.unei.interceptor.LoginInterceptor"/><interceptor-stack name="checkStack"><interceptor-ref name="loginInterceptor"/><interceptor-ref name="defaultStack"/></interceptor-stack></interceptors>

<result name="login" type="redirect">/admin/login.jsp</result>
result type设置为"redirect" 否则客户端可能不跳转
原创粉丝点击