前言:strut2框架提供拦截器的实现有很多种,根据需求我们需要拦截登陆页面以后的操作,同时也要放行一些页面。而MethodFilterInterceptor 可以满足这一点,他有一个属性Set excludeMethods 可以指定哪些方法不用拦截。 # 创建一个工具类方便获取session中的用户信息: ```java /** * BOS项目的工具类 * * @author Agent kingtail * */ public class BOSUtils { // 获取session对象 public static HttpSession getSession() { return ServletActionContext.getRequest().getSession(); } // 获取登录用户对象 public static User getLoginUser() { return (User) getSession().getAttribute("loginUser"); } } ``` # 创建拦截类,继承MethodFilterInterceptor,自定义拦截器,拦截用户未登录访问登录页面: ```java /** * 自定义拦截器,拦截未登录访问页面 * * @author Agent kingtail * */ public class BosLoginInterceptor extends MethodFilterInterceptor { // 拦截方法 protected String doIntercept(ActionInvocation invocation) throws Exception { ActionProxy proxy = invocation.getProxy(); String actionName = proxy.getActionName(); String namespace = proxy.getNamespace(); String url = namespace + actionName; System.out.println(url); // 从session中获取用户对象 User user = BOSUtils.getLoginUser(); if (user == null) { // 没有登录,跳转到登录页面 return "login"; } // 放行 return invocation.invoke(); } } ``` # 在struts.xml中配置拦截器: ```java login /login.jsp /WEB-INF/pages/{1}/{2}.jsp /index.jsp ``` 最后修改:2020 年 02 月 25 日 08 : 32 PM © 著作权归作者所有 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付