`

struts2 自学笔记(1)

阅读更多

 

何为 struts2

先看一个图:

 

这个图很明确的说明了 struts2 的由来,它是由 webwork struts 相结合的结果,因此它不仅仅事 struts1 的改进版本了,而是一个完全很新的东西。 Struts2 网站上有这样一段话:

Apache Struts 2 is an elegant, extensible framework   for creating enterprise-ready Java web applications. The framework is designed to streamline the full development cycle, from building, to deploying, to maintaining applications over time.

Apache Struts 2 was originally known as WebWork 2. After working independently for several years, the WebWork and Struts communities joined forces to create Struts2 . This new version of Struts is simpler to use and closer to how Struts was always meant to be.

大体的意思就是: Apache Struts 2 的是一个优雅,可扩展的框架   用于创建企业级 Java Web 应用程序。   该框架旨在简化整个开发周期,从建设,部署以及其他任何时间。

Apache Struts 2 的原名 WebWork 2   数年之后, WebWork Struts 的社区的联手创建 Struts   2     这个新版本的 Struts 是简单的使用,更贴近我们想要的。

 

现在我们知道了, struts2 是以 webwork 为核心的,所以和 struts1 没有太大关系除了名字相似以外。

 

那么 struts2 struts1 到底有哪些不同,网上有很多,我找了几个明显的,当然这不是我写的,是我在网上找的分析的比较好的:

 

Action :  
• Struts1
要求 Action 类继承一个抽象基类。 Struts1 的一个普遍问题是使用抽象类编程而不是接口。  
• Struts 2 Action
类可以实现一个 Action 接口,也可实现其他接口,使可选和定制的服务成为可能。 Struts2 提供一个 ActionSupport 基类去 实现 常用的接口。 Action 接口不是必须的,任何有 execute 标识的 POJO 对象都可以用作 Struts2 Action 对象。  

线程模式 :  
• Struts1 Action
是单例模式并且必须是线程安全的,因为仅有 Action 的一个实例来处理所有的请求。单例策略限制了 Struts1 Action 能作的事,并且要在开发时特别小心。 Action 资源必须是线程安全的或同步的。  
• Struts2 Action
对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上, servlet 容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)  

 

Servlet 依赖 :  
• Struts1 Action
依赖于 Servlet API , 因为当一个 Action 被调用时 HttpServletRequest HttpServletResponse 被传递给 execute 方法。  
• Struts 2 Action
不依赖于容器,允许 Action 脱离容器单独被测试。如果需要, Struts2 Action 仍然可以访问初始的 request response 。但是,其他的元素减少或者消除了直接访问 HttpServetRequest HttpServletResponse 的必要性。  

可测性 :  
测试 Struts1 Action 的一个主要问题是 execute 方法暴露了 servlet API (这使得测试要依赖于容器)。一个第三方扩展-- Struts TestCase --提供了一套 Struts1 的模拟对象(来进行测试)。  
• Struts 2 Action
可以通过初始化、设置属性、调用方法来测试, 依赖注入 支持也使测试更容易。  

捕获输入 :  
• Struts1
使用 ActionForm 对象捕获输入。所有的 ActionForm 必须继承一个基类。因为其他 JavaBean 不能用作 ActionForm ,开发者经 常创建多余的类捕获输入。动态 Bean DynaBeans )可以作为创建传统 ActionForm 的选择,但是,开发者可能是在重新描述 ( 创建 ) 已经存 在的 JavaBean (仍然会导致有冗余的 javabean )。  
• Struts 2
直接使用 Action 属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己 ( ) 属性的 rich 对象类型。 Action 属性能够通过 web 页面上的 taglibs 访问。 Struts2 也支持 ActionForm 模式。 rich 对象类型,包括业务对象,能够用作输入 / 输出对象。这种 ModelDriven 特性简化了 taglib POJO 输入对象的引用。  

表达式语言:  
• Struts1
整合了 JSTL ,因此使用 JSTL EL 。这种 EL 有基本对象图遍历,但是对集合和索引属性的支持很弱。  
• Struts2
可以使用 JSTL ,但是也支持一个更强大和灵活的表达式语言-- "Object Graph Notation Language" (OGNL).  

绑定值到页面( view :  
• Struts 1
使用标准 JSP 机制把对象绑定到页面中来访问。  
• Struts 2
使用 "ValueStack" 技术,使 taglib 能够访问值而不需要把你的页面( view )和对象绑定起来。 ValueStack 策略允许通过一系列名称相同但类型不同的属性重用页面( view )。  

类型转换:  
• Struts 1 ActionForm
属性通常都是 String 类型。 Struts1 使用 Commons-Beanutils 进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。  
• Struts2
使用 OGNL 进行类型转换。提供基本和常用对象的转换器。  

校验:  
• Struts 1
支持在 ActionForm validate 方法中手动校验,或者通过 Commons Validator 的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。  
• Struts2
支持通过 validate 方法和 XWork 校验框架来进行校验。 XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持 chain 校验子属性  

Action
执行的控制:  
• Struts1
支持每一个模块有单独的 Request Processors (生命周期),但是模块中的所有 Action 必须共享相同的生命周期。  
• Struts2
支持通过拦截器堆栈( Interceptor Stacks )为每一个 Action 创建不同的生命周期。堆栈能够根据需要和不同的 Action 一起使用。

 

知道了 struts2 是什么的东西后,下面开始真的学习 struts2

2
2
分享到:
评论

相关推荐

    struts2自学笔记

    Struts2自学笔记 Struts2是Java Web开发中的一款广泛应用的MVC框架,它基于Model-View-Controller设计模式,旨在简化企业级应用的开发流程。本自学笔记将深入探讨Struts2的核心概念、主要功能及其实现原理。 1. **...

    Struts2自学笔记——Struts2的文件上传

    这篇自学笔记将深入探讨Struts2的文件上传机制。 1. **文件上传原理** 文件上传是基于HTTP协议的POST请求实现的。在HTML表单中,通过`<input type="file" />`元素让用户选择本地文件。当用户提交表单时,浏览器会...

    Struts2超详细学习笔记分享(献给自学新人)

    本篇超详细学习笔记将带你逐步深入理解Struts2的核心概念和运作机制。 首先,让我们了解Struts2的基本特性。Struts2是一个基于Servlet的框架,它通过将JSP作为视图(View),Servlet作为控制器(Controller),并将...

    Struts1新手入门笔记(全)

    在本入门笔记中,我们将逐步了解如何开始使用Struts1。 首先,Struts1的核心组件包括前端控制器ActionServlet,它作为整个应用的入口点,负责处理所有的HTTP请求。ActionServlet会解析请求,根据配置文件(通常位于...

    自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar

    自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar; 笔记地址:http://www.guloulou.com/?p=1253

    struts自学笔记

    在本文中,我们将深入探讨Struts2的主要特点、与Struts1的对比,以及如何创建一个简单的Struts2 HelloWorld应用。 首先,让我们看看Struts2与Struts1之间的关键区别: 1. **Action实例管理**: - 在Struts1中,...

    自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar

    本资源“自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar”提供了黎活明老师在传智博客上讲解的第一个Struts2应用的开发示例,帮助初学者理解并实践Struts2的核心概念和使用方法。...

    j2ee自学笔记--- 一些心得

    总结来说,这个J2EE自学笔记不仅涉及了核心框架Struts的使用,还涵盖了与J2EE相关的PHP语言、开发工具MyEclipse以及基础环境JDK的使用。通过提供的七个小项目,你可以深入理解JSP在Web应用中的作用,并通过实践来...

    传智播客2016版hibernate+struts2+Spring框架资料课件+笔记

    《传智播客2016版hibernate+struts2+Spring框架学习资源详解》 在IT行业中,框架的使用是开发高效、稳定应用的关键。本资源包聚焦于三大主流Java Web框架:Hibernate、Struts2和Spring,它们在2016年时仍然是开发者...

    ssh自学笔记

    SSH自学笔记主要涵盖的是Secure Shell(SSH)协议的使用、配置和相关的重要知识点。SSH是一种网络协议,用于安全地远程登录到服务器,进行文件传输,以及其他命令行操作。以下是一些核心的学习点: 1. **SSH基础...

    java自学笔记

    Java自学笔记概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。这份“java自学笔记”涵盖了从基础到进阶的多个Java知识点,旨在帮助初学者系统地学习并掌握...

    struts经典笔记

    经典的struts自学宝典,都是我的潜心专研,精心总结出来的

    达内学习笔记,java笔记

    总的来说,这份“达内学习笔记,java笔记”是Java初学者和进阶者宝贵的自学资料,它将帮助学习者巩固Java基础知识,理解Struts框架的使用,并且提升JavaScript的实战技能,为成为一名合格的Java开发者打下坚实的基础...

    JavaWeb自学的心得和笔记

    下面,我将根据标题“JavaWeb自学的心得和笔记”以及提供的文件名称,详细阐述一些关键的知识点。 首先,JavaWeb是基于Java语言进行Web应用开发的框架和技术集合。它包括了Servlet、JSP、JSTL、EL表达式、过滤器、...

    北京圣思园javaweb课件和笔记

    "北京圣思园javaweb课件和笔记"很可能是某次培训课程或自学资源,包含了关于这个主题的详细讲解和学习记录。 在JavaWeb开发中,基础知识点主要包括: 1. **Servlet与JSP**:Servlet是Java编写服务器端应用程序的...

    jfinal自学笔记

    `controllerKey` 可包含正斜杠,如 `/admin/article`,这类似 Struts2 中的命名空间功能,帮助组织和管理控制器层次结构。 2. **表单提交与Web配置** 当用户在页面上填写表单并提交时,如 `...

    SSH的笔记整理和重点讲解

    马士兵Struts2学习笔记2011.doc可能涵盖了Struts2的基本概念、配置、动作调度、拦截器、结果类型等内容,以及如何结合其他技术如JSP、Servlet来实现一个完整的Web应用。 2. **Hibernate**: Hibernate是一个对象...

    JAVA基础学习总结笔记

    看的东西不在多,而在于精, 程序设计最重要的就是上级操作了, 既然选择了,就该要有坚持的觉悟... Cookie使用. ...里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是一些基础性的概念总结。

    我的学习笔记集合(包括有corejava,jdbc,hibernate,ejb,c++,servlet,spring,struts,jsp)

    虽然现在Struts2已经较过时,但了解其工作原理对理解现代框架如Spring MVC仍然有帮助。 9. **JSP (JavaServer Pages)**: JSP是一种动态网页技术,它允许在HTML页面中嵌入Java代码,以实现动态内容的生成。JSP与...

Global site tag (gtag.js) - Google Analytics