`
beyond429
  • 浏览: 93418 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2.0拦截器的用法

阅读更多
struts2.0拦截器的用法:

配置文件:

<package name="default" extends="struts-default">

        <interceptors>
         <!-- 定义拦截器 loginInterceptor 继承default的package中action都可以引用该拦截器-->
            <interceptor name="loginInterceptor" class="com.cetc.util.CheckLoginInterceptor" />
            <!-- 定义拦截器堆栈 loginInterceptorStack -->
            <interceptor-stack name="loginInterceptorStack">
             <!-- 引用默认拦截器 defaultStack -->
                <interceptor-ref name="defaultStack" />
                <!-- 引用自定义拦截器 loginInterceptor -->
                <interceptor-ref name="loginInterceptor" />
            </interceptor-stack>
        </interceptors>
      
       
        <!-- 重定义默认拦截器堆栈 这里不要使用,若定义后凡是继承了default的package都回执行该拦截器-->
     <!--<default-interceptor-ref name="loginInterceptorStack"/>-->
    
       
    </package>



<package name="login" extends="default">
        <action name="login" class="com.cetc.struts.action.t00hy.LoginAction" method="login">
            <result name="input">/pages/home/login.jsp</result>
            <result name="to_zbr">/pages/t02qy/util/index_zbr.jsp</result>
            <result name="to_tbr">/pages/t02qy/util/index_tbr.jsp</result>
            <result name="to_zj">/pages/t01zj/util/index_zj.jsp</result>
            <result name="to_admin">/pages/home/index_admin.jsp</result>
            <!-- 引用拦截器 loginInterceptorStack -->
            <interceptor-ref name="loginInterceptorStack"></interceptor-ref>
        </action>
        <action name="qyLogin" class="com.cetc.struts.action.t00hy.LoginAction" method="qyLogin">
            <result name="input">/pages/home/login.jsp</result>
            <result name="to_zbr">/pages/t02qy/util/index_zbr.jsp</result>
            <result name="to_tbr">/pages/t02qy/util/index_tbr.jsp</result>
            <result name="to_zj">/pages/t01zj/util/index_zj.jsp</result>
            <result name="to_admin">/pages/home/index_admin.jsp</result>
            <!-- 引用拦截器 loginInterceptorStack -->
            <interceptor-ref name="loginInterceptorStack"></interceptor-ref>
        </action>
  <action name="logout" class="com.cetc.struts.action.t00hy.LoginAction" method="logout">
            <result name="success">/pages/home/login.jsp</result>
        </action>
  <action name="goLogin" class="com.cetc.struts.action.t00hy.LoginAction" method="goLogin">
            <result name="success">/pages/home/login.jsp</result>
        </action>
    </package>
   


<package name="t00hy" namespace="/t00hy" extends="default">
  <action name="updateTWzHyzh" class="com.cetc.struts.action.t00hy.TWzHyzhAction" method="updateTWzHyzh">
   <result name="success" type="dispatcher">/pages/home/modifySuccess.jsp</result>
   <result name="input" type="dispatcher">/pages/home/modify_password.jsp</result>
            <!-- 引用拦截器 loginInterceptorStack -->
            <interceptor-ref name="loginInterceptorStack"></interceptor-ref>
  </action>
  <action name="goModifyPassword" class="com.cetc.struts.action.t00hy.TWzHyzhAction" method="goModifyPassword">
   <result name="success" type="dispatcher">/pages/home/modify_password.jsp</result>
            <!-- 引用拦截器 loginInterceptorStack -->
            <interceptor-ref name="loginInterceptorStack"></interceptor-ref>
  </action>

</package>



抽象类:


import com.opensymphony.xwork2.interceptor.Interceptor;
import com.opensymphony.xwork2.ActionInvocation;


public abstract class AbstractInterceptor implements Interceptor {

public void destroy() {
  // TODO Auto-generated method stub
  System.out.println("LoginInterceptor.destroy()!");
}

public void init() {
  // TODO Auto-generated method stub
  System.out.println("LoginInterceptor.init()!");
}

public abstract String intercept(ActionInvocation invocation) throws Exception;
  // TODO Auto-generated method stub

}


自定义拦截器:


import java.util.Map;

import com.cetc.struts.action.t00hy.LoginAction;
import com.opensymphony.xwork2.ActionInvocation;

public class CheckLoginInterceptor extends AbstractInterceptor {

private static final long serialVersionUID = -8624767071049356602L;
public static final String LOGIN_KEY = "LOGINED";
    public static final String LOGIN_PAGE = "login";

    public String intercept(ActionInvocation actionInvocation) throws Exception {

        System.out.println("begin check login interceptor!");
        // 对LoginAction不做该项拦截
        Object action = actionInvocation.getAction();
        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);
        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;
        }
    }


}

分享到:
评论

相关推荐

    struts2.0拦截器、crud例子与用法

    struts2.0描述了拦截器并有对应的例子,用struts实现crud 用法及例子,并介绍了struts2的action的流程 及请求过程

    struts2.0.jar

    Struts 2.0框架中出现的许多特性旨在让Struts更容易使用: · 改进的设计: 与Struts 1相比,Struts 2的所有类都基于接口,核心接口独立于HTTP。这些API并不依赖服务器小程序API。 · 简化的Action: Struts 2 Action...

    JAVA程序开发大全---上半部分

    12.1.2 Struts 2.0与Struts 1.x框架的区别 215 12.2 MyEclipse创建基于Struts 2.0框架的项目 215 12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts...

    jcaptcha4struts2:从 code.google.compjcaptcha4struts2 自动导出

    通过在您的操作(处理验证码输入)中扩展提供的基本操作类,或通过配置拦截器来启用 JCaptcha 支持。 ##2。 在您的应用程序中启用 JCaptcha 支持 有两种方法可以让您的应用程序使用此插件使用 JCaptcha。 从提供的 ...

    Spring 2.0 开发参考手册

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2....

    struts2 标签库 帮助文档

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-----超链接,类似于html里的&lt;a&gt;&lt;/a&gt; 3. ...

    struts2深入浅出(备java基础,javaweb,javaee,框架)

    Struts2框架介绍、工作原理与架构分析、6大配置文件分析使用通配符定义action、动态方法调用,ActionContext及ServletActionContext...默认拦截器分析、自定义拦截器、OGNL表达式、值栈分析及操作、标签、 json使用。

    J2EE应用开发详解

    118 8.3.5 Struts2配置文件 119 8.4 Action的配置方式 121 8.4.1 动态方法调用 121 8.4.2 设置action元素的method属性 122 8.4.3 使用通配符配置action 122 8.4.4 默认action 123 8.5 拦截器Interceptor 123 8.5.1 ...

    《MyEclipse 6 Java 开发中文教程》前10章

    10.3.3 装配拦截器和Bean 212 10.3.4 测试和运行 214 10.3.5 AOP简介和相关概念 214 10.3.6 关于java.lang.ClassCastException: $Proxy0错误的解决方法 216 10.4 开发 Spring 2.0 AOP 应用 219 10.4.1 使用aop 标签...

    Spring in Action(第二版 中文高清版).part2

    11.3.4 使用注释声明拦截器 11.4 小结 第12章 访问企业服务 12.1 从JNDI中获取对象 12.1.1 使用传统的JNDI 12.1.2 注入JNDI对象 12.1.3 在Spring 2中注入JNDI对象 12.2 发送电子邮件 12.2.1 配置邮件发送...

    Spring in Action(第二版 中文高清版).part1

    11.3.4 使用注释声明拦截器 11.4 小结 第12章 访问企业服务 12.1 从JNDI中获取对象 12.1.1 使用传统的JNDI 12.1.2 注入JNDI对象 12.1.3 在Spring 2中注入JNDI对象 12.2 发送电子邮件 12.2.1 配置邮件发送...

    Spring in Action(第2版)中文版

    11.3.4使用注释声明拦截器 11.4小结 第12章访问企业服务 12.1从jndi中获取对象 12.1.1使用传统的jndi 12.1.2注入jndi对象 12.1.3在spring2中注入jndi对象 12.2发送电子邮件 12.2.1配置邮件发送器 12.2.2...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    8.8 拦截器 332 8.9 依赖注入 335 8.9.1 EJB注入 336 8.9.2 资源注入 339 8.10 配置EJB引用 340 8.11 使用计时器进行任务调度 342 8.12 本章小结 345 第9章 消息驱动EJB 346 9.1 JMS和EJB 347 9.1.1 为什么使用MDB ...

    Spring API

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. ...

    spring chm文档

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2....

    Spring中文帮助文档

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器(ViewResolver) 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.4.3. 拦截器(HandlerInterceptor) 13.5. 视图与视图解析 13.5.1. 视图解析器 13.5.2. 视图解析链 13.5.3. 重定向(Rediret)到另一个视图 13.5.3.1. RedirectView 13.5.3.2. redirect:前缀 13.5.3.3. forward:...

Global site tag (gtag.js) - Google Analytics