struts.xml
<!-- 自定义拦截器的配置 -->
<package name="mydefault" extends="struts-default" abstract="true">
<interceptors>
<interceptor name="CheckLoginInterceptor" class="com.itheima.web.interceptor.CheckLoginInterceptor"></interceptor>
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="CheckLoginInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 重置默认拦截器栈 -->
<default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
<!-- 全局结果视图 -->
<global-results>
<result name="login">/login/login.jsp</result>
</global-results>
</package>
<!--不需要监听的继承默认的拦截器包-->
<package name="p1" extends="struts-default">
<!-- 用户登录的动作 -->
<action name="login" class="com.itheima.web.action.UserAction" method="login">
<result>/login/home.jsp</result><!-- 登录成功,可以使用重定向 -->
<result name="input">/login/login.jsp</result>
</action>
</package>
拦截器的.java
package com.itheima.web.interceptor;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.itheima.domain.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
/**
* 检查登录的拦截器
* @author zhy
*
*/
public class CheckLoginInterceptor extends MethodFilterInterceptor {
protected String doIntercept(ActionInvocation invocation) throws Exception {
//1.获取session对象
HttpSession session = ServletActionContext.getRequest().getSession();
//2.在session域中找user对象
User user = (User)session.getAttribute("user");
//3.没有 前往登录页面
if(user == null){
return "login";
}
//4.有 放行
return invocation.invoke();
}
}