`
beyond429
  • 浏览: 95802 次
  • 性别: 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的拦截器提供了一种灵活的方式来扩展和控制应用程序的行为,而CRUD操作则通过Action类实现。理解这些核心概念对于有效地利用Struts2开发Web应用至关重要。通过熟练掌握这些知识,开发者可以更...

    Struts2.0拦截器总结

    ### Struts2.0拦截器详解 #### 一、拦截器概述 在Struts2框架中,拦截器(interceptor)是一种非常重要的机制,用于在执行Action前后进行一系列预处理或后处理的操作。拦截器可以用来执行如参数拦截、类型转换、输入...

    struts2.0拦截器完整

    下面我们将深入探讨Struts2.0拦截器的完整知识体系。 1. **拦截器的概念** 拦截器类似于AOP(面向切面编程)中的通知,它是在Action执行前或执行后进行拦截,并可以修改Action的执行流程。在Struts2中,拦截器是...

    struts2.0的特点

    配置方面,Struts2.0使用XML文件(如struts.xml)来描述框架的行为,包括包、Action、拦截器、结果等元素。这些配置文件不仅能够清晰地描述框架结构,还提供了高度的可定制性,开发者可以根据项目需求调整框架的行为...

    struts 2.0 的拦截器

    Struts 2.0 是一个基于MVC设计模式的Java Web框架,它的核心功能之一是拦截器(Interceptor),这是实现业务逻辑控制和增强应用程序功能的重要组件。在Struts 2中,拦截器扮演着中间人的角色,它们在Action调用前后...

    struts2.0jar包

    Struts2.0 jar包是Java Web开发中的一个重要组件,它是Apache Struts框架的一个特定版本。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于构建可维护性高、结构清晰的Java应用。该框架极大...

    Struts2.0大结合

    五、Struts2.0拦截器 拦截器是Struts2.0实现业务逻辑的重要手段,如ValidationInterceptor进行数据校验,ExceptionMappingInterceptor处理异常,LoginInterceptor实现登录控制等。拦截器可以自由组合,形成拦截器栈...

    三大框架中文文档中的struts2.0开发手册(程序员必看)

    2. **拦截器(Interceptor)**:拦截器是Struts2.0的一大特色,它可以实现通用的功能,如日志、权限检查等,无需在每个Action中重复编写。通过配置拦截器栈,可以灵活地控制请求的处理流程。 3. **OGNL(Object-...

    struts2.0入门案例

    本入门案例将带你逐步了解如何使用Struts2.0来创建一个简单的Web应用。 一、Struts2.0框架基础 Struts2.0是Struts1的升级版,它在功能和易用性上都有显著提升。框架的核心组件包括Action、Result、Interceptor等,...

    Struts2.0学习系列 以及 Struts2.0安装包

    Struts2.0框架整合了多种开源项目,如FreeMarker或JSP作为视图技术,OGNL(Object-Graph Navigation Language)作为表达式语言,以及拦截器机制来处理请求。框架的核心部分包括Action类,它是业务逻辑的载体;配置文件...

    struts 2.0 详细配置

    - 配置了所有的 Action、拦截器等组件。 - 用于映射 URL 到对应的 Action 类。 4. **模型(Model)** - 包含了应用的数据和业务逻辑。 - 通常使用 POJO 来表示。 #### 四、Struts 2.0 的工作流程 当用户通过...

    Struts 2.0全攻略之Struts 2.0参考手册

    拦截器是Struts 2.0的一个核心特性,它们在Action执行前后执行,可以用于日志记录、权限验证、数据校验等。开发者可以通过自定义拦截器扩展框架功能。 6. **OGNL(Object-Graph Navigation Language)** Struts ...

    Struts_2.0从入门到精通

    Struts2.0内置了多种拦截器,同时支持自定义拦截器,使得开发者可以根据应用需求定制不同的执行流程。 八、在Struts2.0中实现IoC 依赖注入(IoC)是现代软件架构的重要组成部分,Struts2.0通过其内部的IoC容器,...

    struts2.0源代码

    在"struts2.0源代码"中,你可以看到框架的核心组件、拦截器、配置解析、动作执行等核心功能的实现。以下是一些主要的知识点: 1. **ActionInvocation**:这是Struts2的核心接口,代表了一个动作的执行流程。它负责...

    Struts2.0中文教程

    5. **配置与拦截器**:讨论Struts2.0的核心配置文件,如struts-default.xml、struts-plugin.xml和自定义的struts.xml,以及拦截器的原理和使用,包括预定义的拦截器栈和自定义拦截器的实现。 6. **OGNL(Object-...

    struts2.0开发的都市供求信息系统

    这个都市供求信息系统全面展示了Struts2.0的使用,包括模型-视图-控制器的设计、数据库交互、用户认证、国际化支持等多个方面,为学习和实践Struts2.0提供了一个良好的平台。通过分析和重构这个项目,开发者可以深化...

    struts2.0的基本jar包

    在开发Struts2.0项目时,开发者需要理解Action、拦截器(Interceptor)、结果(Result)和配置文件(如struts.xml)的工作原理。Action是业务逻辑的载体,拦截器则提供了在Action执行前后进行额外处理的能力,如登录...

    struts2.0教程合集

    这份文档通常会涵盖Action、拦截器(Interceptor)、结果(Result)和配置文件(struts.xml)等内容,是了解Struts2.0的第一步。此外,它可能还会讲解Struts2.0如何与Spring、Hibernate等其他框架集成,以实现更高效...

    Struts2.0 入门学习资料

    2. 拦截器:拦截器是Struts2.0的一大亮点,可以实现如日志记录、权限验证、事务管理等通用功能,提高了代码复用性。 3. 结果类型:Struts2.0支持多种结果类型,如Redirect、RedirectAction、Stream等,可以灵活地...

Global site tag (gtag.js) - Google Analytics