您的位置:首页 > 编程语言 > Java开发

struts2 中的拦截器例子快速进阶

2008-09-28 16:09 330 查看
  小结了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();

}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: