/** * 登录验证拦截器 * */ @SuppressWarnings("serial") public class LoginInteceptor implements Interceptor { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void init() { // TODO Auto-generated method stub } /**每次访问Action类之前,先执行intercept方法*/ @Override public String intercept(ActionInvocation invocation) throws Exception { //获取当前访问Action的URL String actionName = invocation.getProxy().getActionName(); //如果当前访问Action的URL是"loginAction_login"(根据自己写的来定)表示此时还没有Sesion,需要放行 if(!"loginAction_login".equals(actionName)){ //从Session中获取当前用户对象 Employee employee = SessionContext.get(); //如果Session不存在,跳转到登录页面 if(employee==null){ return "login";//这个login已经在struts.xml的全局结果视图中配置了 } } //放行,访问Action类中方法 return invocation.invoke(); } }
struts.xml中相关配置:
<!-- 拦截器配置 --> <interceptors> <!-- 定义了一个用于拦截器登录的拦截器 --> <interceptor name="loginInterceptor" class="cn.itcast.ssh.utils.LoginInteceptor"></interceptor> <!-- 定义一个拦截器栈 --> <interceptor-stack name="systemStack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="loginInterceptor" /> </interceptor-stack> </interceptors> <!-- 定义系统默认拦截器 全局 --> <default-interceptor-ref name="systemStack" /> <!-- 全局结果视图 --> <global-results> <result name="login" type="redirect"> login.jsp </result> </global-results>
就这样拦截器就实现了