首先定义一个拦截器类

package com.java.web.action.interceptor;
import com.java.model.Admin;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class LoginValidateInterceptor implements Interceptor {
private static final long serialVersionUID = 1L;
public void destroy() {
}
public void init() {
}
/**
* 这里拦截后台管理员登陆,防止用户在地址栏输入地址直接登陆
*/
public String intercept(ActionInvocation invocation) throws Exception {
Admin user = (Admin) ActionContext.getContext().getSession().get("loginUser");
if(user != null){
//说明session中存在,用户已经登录了
return invocation.invoke();
}
//说明用户没有登录,要重新定向到登录页面
ActionContext.getContext().put("directUrl", "/page/controller/login.jsp");
return "url";
}
}
然后配置struts.xml文件(部分代码)
<package name="base" extends="struts-default">
<interceptors> <!-- 定义权限控制拦截器 -->
<interceptor name="authority" class="com.java.web.action.interceptor.LoginValidateInterceptor" /> <!-- 定义一个包含权限控制的拦截器栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack" /><!-- 默认的拦截器栈 ,一定要写的-->
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault"/>自定义的拦截器没有放入个别的action中,表示对所有的action都进行拦截 <global-results> <!--定义全局result-->
<result name="url">/page/share/url.jsp</result>
<result name="message">/page/share/message.jsp</result>
</global-results>
</package>
<!-- 前台用户模块 -->
<package name="user" namespace="/user" extends="base">继承base包
<action name="*" class="{1}Action">
<result name="success">/page/user.jsp</result>
</action>
</package>