`
冯瑞芳
  • 浏览: 28781 次
  • 性别: Icon_minigender_2
  • 来自: 河南
文章分类
社区版块
存档分类
最新评论

struts2总结之二

阅读更多
Struts2工作原理:
Struts2基本工作过程
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);
3、接着StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action, StrutsPrepareAndExecuteFilter 把请求的处理交给ActionProxy;
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个Action Invocation的实例。
7、Action Invocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。
Struts2拦截器介绍:使用拦截器可以实现横切功能并使这些实现相对action甚至Struts2框架保持独立。
可以实现和使用自己所需的特性且不用修改框架的底层代码。
使用拦截器可以达到以下目的:
在调用Action之前,提供预处理逻辑
与Action进行交互,提供执行信息,比如设置请求中的参数
在调用Action之后,提供后处理逻辑
修改返回的结果,进而修改呈现给用户的内容
捕获异常从而替换可执行的处理过程或返回一个不同结果
配置一个内置的timer拦截器
获取执行某个Action组件所耗费的时间,以便做一个粗略的性能调试。
在struts.xml中的某个Action组件的配置中添加<interceptor-ref>标签
比如:
<action name="helloworld"  class="demo.web.HelloWorldAction">
<interceptor-ref  name="timer" />
<result>/success.jsp</result>
</action>
说明:<interceptor-ref>的name属性为拦截器的别名,这里引用的是Struts2的内置的,具体地在struts-default.xml的struts-default包中定义有
如果希望包下的所有action都使用自定义的拦截器,可以通过<default-interceptor-ref name=“mystack”/>把拦截器定义为默认拦截器。
注意:每个包只能指定一个默认拦截器。另外,一旦我们为该包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用。


具体实例如下:
在struts2.xml文件中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
     <package name="csdn" extends="struts-default" namespace="/csdn">
    
      <!-- 声明自定义拦截器 -->
       <interceptors>
         <interceptor name="myTimer" class="cn.csdn.strut2.interceptors.MyDateInterceptor"/>
         <!-- 自己定义的拦截器栈 -->
         <interceptor-stack name="mystack">
         <!-- 使用struts2自带拦截器-->
         <interceptor-ref name="timer"/>
         <!-- 使用自定义的拦截器 -->
         <interceptor-ref name="myTimer"/>
         <!-- 引用struts2中默认的拦截器栈 -->
         <interceptor-ref name="defaultStack"/>
         </interceptor-stack>
       </interceptors>
      
       <!-- 使用自己定义的拦截器栈作为默认的拦截器栈 -->
       <default-interceptor-ref name="mystack"/>
      <!-- 全局结果集 -->
        <global-results>
           <result name="input">/index.jsp</result>
        </global-results>
       
       <!-- action -->
       <action name="upload" class="cn.csdn.struts2.action.UserAction" method="execute">
         <!-- 使用struts2自带拦截器
         <interceptor-ref name="timer"/>
         -->
         <!-- 使用自定义的拦截器
         <interceptor-ref name="myTimer"/>
         -->
          <result>/index.jsp</result>
       </action>
       <!-- action -->
       <action name="uploads" class="cn.csdn.struts2.action.UserAction" method="execute">
          <!-- 自定义拦截器栈的引用
          <interceptor-ref name="mystack"/>
          -->
          <result>/index.jsp</result>
       </action>
       <!-- action -->
       <action name="uploadss" class="cn.csdn.struts2.action.UserAction" method="execute">
          <result>/index.jsp</result>
       </action>
     </package>
</struts>

分享到:
评论

相关推荐

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    struts2总结项目总结

    在本项目总结中,我们将深入探讨Struts2的核心特性、工作原理以及如何在实际项目中应用。 一、Struts2框架基础 1. 动态方法调用(Dynamic Method Invocation,DMI):Struts2允许通过URL直接调用Action类的方法,...

    struts2总结大全

    本总结将深入探讨Struts2的核心概念、关键功能和实用技术,以帮助开发者全面理解并熟练运用这一框架。 一、Servlet模板 在Struts2中,Servlet模板是一种处理请求和响应的方式。它通过拦截器链对请求进行处理,然后...

    我的struts2的总结

    “struts-default.xml”是Struts2框架中的默认配置文件之一,它包含了框架的基础配置。如果在开发过程中遇到如“struts2 null异常”的问题,可以检查这个文件中的配置是否正确。例如,确保所有需要的拦截器、结果...

    struts2学习总结

    struts2学习总结

    struts2总结第一章

    Struts2是一个强大的MVC框架,它融合了WebWork的核心设计思想和Struts1的优点,为Java Web开发提供了高效、灵活的解决方案。本章主要介绍了Struts2的基础知识,包括其设计理念、优点、环境搭建步骤以及核心配置文件...

    struts2总结

    ### Struts2总结 #### 简介与架构 1. **三层架构**:Struts2采用三层架构设计,即**展示层**(View)、**业务逻辑层**(Controller)和**数据持久层**(Model)。这种分层设计有助于提高系统的可维护性和扩展性。 2. **...

    Struts2输入校验总结

    ### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...

    Struts2知识点总结

    - Struts2的核心概念之一,用于存放Action对象和其他数据,方便视图层获取。 - Action可以直接将属性放入值栈,JSP可以通过OGNL表达式直接访问。 6. **OGNL(Object-Graph Navigation Language)** - Struts2的...

    Struts2初步使用总结

    ### Struts2初步使用总结 #### 一、Struts2原理概述 **1.1 为什么要用Struts2** 在探讨为何使用Struts2之前,我们先简要回顾一下Struts2的一些基本特点: - **模块化设计**:Struts2采用模块化的架构设计,使得...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

    Struts2课堂学习总结

    Struts2是一个基于MVC设计模式的Java web框架,它极大地简化了企业级应用的开发。以下是关于Struts2的一些核心知识点的详细说明: 1. **环境搭建**:要搭建Struts2的开发环境,首先需要配置Tomcat服务器和JDK。接着...

    Struts2轻松入门,Struts2总结

    二、Struts2的主要特性 1. **强大的插件体系**:Struts2支持许多插件,如Freemarker和Velocity模板引擎,Ajax支持,以及JSON和XML的处理。 2. **灵活的配置**:支持XML和注解两种配置方式,使得配置更加灵活,减少...

    java struts2 总结

    以下是关于Struts2的一些关键知识点和实践总结: 1. **依赖库**: 开发Struts2应用时,你需要引入一系列的jar包,包括`commons-logging`,`commons-fileupload`,`freemarker`,`ognl`,`struts2-core`和`xwork`等...

Global site tag (gtag.js) - Google Analytics