步骤:
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/login.jsp
用于判断用户是否登录
1.过滤器主要用于,判断用户是否登陆,以防止接访问应用中的网页进行提交。Java code:
package filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.Servle