SSH2 拦截器 登录验证 三步走

用拦截器简单的实现了登录验证,如果没有登录就跳到登录页面。

1.Interceptor 方法

package com.anteasy.struts2.interceptor;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoginInterceptor extends AbstractInterceptor{
/*init 方法 ,仅创建Interceptor时调用一次*/
public void init() {
System.out.println("inited =================== ");
}

/*destroy 方法 ,仅摧毁Interceptor时调用一次*/
public void destroy() {
System.out.println("destroyed =================== ");
}

/*intercpte 方法,Interceptor创建后,每次拦截调用*/
public String intercept(ActionInvocation arg0) throws Exception {
HttpSession session = ServletActionContext.getRequest().getSession();//得到HttpSession
String method = arg0.getInvocationContext().getName();//得到请求action的name(不是class)

//判断 session 中“loginUser”键为空(注:此处默认登陆后会存储 用户信息 为“loginUser”到 session中)
//判断 action请求 的方法名为 不为“login” (注:此处默认 登陆请求的name名为“login”判断的目的是将“login”请求排除)
if (session.getAttribute("loginUser") == null && !"loginC".equals(method)) {
session.invalidate();   //摧毁session对象,而不是清除session中的值
return "exit";  //返回“exit”结果
}
return arg0.invoke();  //继续调用后续拦截器
}
}



2. struts.xml 中 设置拦截器
<package name="base-default" extends="struts-default" namespace="/">
<!-- 设置拦截器 -->
<interceptors>
<interceptor name="userLoginInterceptor" class="com.anteasy.struts2.interceptor.LoginInterceptor"/>
<!-- 设置拦截器栈 -->
<interceptor-stack name="baseInterceptor">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="userLoginInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!--设置 默认拦截器 -->
<default-interceptor-ref name="baseInterceptor"/>
<!--设置 拦截结果 -->
<global-results>
<result name="exit" type="redirect">/login.jsp</result>
</global-results>
</package>

3.不同包时拦截器的调用(对于将 struts.xml 内容以 include方法引用 分开放置 是必须)
    <!--  注意 extends 为前面的"base-default" 不是"struts-default" 否则自定义的拦截器不会起作用-->
<package name="login" extends="base-default">
<action name="loginC" class="loginAction" method="login">
<result name="logined">/WEB-INF/pages/main/main.jsp
</result>
<result name="loginerr">login.jsp</result>
</action>
<action name="logout" class="loginAction" method="logout">
<result name="logouted">login.jsp</result>
</action>
</package>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值