struts2 拦截器例子

http://www.cnblogs.com/jackyrong/archive/2008/09/28/1301542.html


小结了struts2 中拦截器的一个例子,以方便快速进阶的.

  比如有个很典型的例子,要求在编辑数据或者增加数据前,必须要先判断用户是否登陆.则我们先在src目录下,建一个

包strutsxml,专门用来存放关于struts的xml.

   其中有个一个是基础xml,比如叫struts-base.xml

  <package name="manager-default" namespace="/" extends="struts-default">
     <!-- 定义全部的拦截器 -->
     <interceptors>
      <!-- 定义第一个自定义的拦截器,用于身份校验 -->
      <interceptor name="isloginInterceptor" class="com.liao.IsLoginInterceptor"></interceptor>  
   <!-- 定义一个拦截器栈,系统所有Action都需配置 -->
   <interceptor-stack name="islogin">
    <interceptor-ref name="isloginInterceptor"></interceptor-ref>
   </interceptor-stack>
     </interceptors>
  <global-results>
   <!-- 配置全局结果,用于身份校验结果返回 -->
   <result name="none">/error/loginerror.jsp</result>
  </global-results>
 </package>

之后分别按功能模块定义xml,比如定义一个struts_crud.xml

     <package name="crud" extends="manager-default" namespace="/adment">
          <action name="a"  class="aAction" method="abc">
         <interceptor-ref name="params"/>
         <interceptor-ref name="islogin"/>
            <result>success.jsp</result>
        </action>

这里表示首先要用islogin的拦截器了.

下面是写这个拦截器.让其继承abstractinterceptor

 

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

import org.apache.commons.logging.*;
import java.util.*;

public class IsLoginInterceptor extends AbstractInterceptor {
 private static final Log logger = LogFactory.getLog(IsLoginInterceptor.class);

 public String intercept(ActionInvocation invocation) throws Exception {
  //取得请求相关的ActionContext实例
  ActionContext act = invocation.getInvocationContext();
  //获取Session
  Map session = act.getSession();
  //从Session中获取用户ID
  String userId = (String)session.get("userId");
  //判断用户是否登录
  if(userId==null){
   //未登录,返回重新登录
   return Action.NONE;
  }
  //执行该拦截器的下一个拦截器,如没有,执行Action被请求的相应方法
  return invocation.invoke();
 }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值