步骤: 1、创建拦截器业务类,继承 AbstractInterceptor 类。重写 intercept 方法,把业务逻辑写在该方法中。 2、在 struts.xml 中注册拦截器。 不过,初步了解,拦截器只对 action 起作用,在地址栏中直接输入的 url,拦截器没有起作用。 所以仅仅这样的话,并没有很完善的对页面的权限控制起作用。 应该过滤器可以弥补这一缺陷。 后期继续研究一下。 public class CheckLoginInterceptor extends AbstractInterceptor { public static final String LOGIN_KEY = "userName"; public static final String LOGIN_PAGE = "login"; @Override public String intercept(ActionInvocation actionInvocation) throws Exception { System.out.println("begin check login interceptor!"); Object action = actionInvocation.getAction(); // 对 LoginAction 不做该项拦截 if (action instanceof LoginAction) { System.out.println("exit check login, because this is login action."); return actionInvocation.invoke(); } // 确认 Session 中是否存在 LOGIN Map session = actionInvocation.getInvocationContext().getSession(); String login = (String) session.get(LOGIN_KEY); System.out.println("Session Username: " +login); if (login != null && login.length() > 0) { // 存在的情况下进行后续操作。 System.out.println("already login!"); return actionInvocation.invoke(); } else { // 否则终止后续操作,返回 LOGIN System.out.println("no login, forward login page!"); return LOGIN_PAGE; } } } 配置:
//指定拦截器的类 //设置默认的拦截器 /default.jsp