何为
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
。
分享到:
相关推荐
Struts2自学笔记 Struts2是Java Web开发中的一款广泛应用的MVC框架,它基于Model-View-Controller设计模式,旨在简化企业级应用的开发流程。本自学笔记将深入探讨Struts2的核心概念、主要功能及其实现原理。 1. **...
这篇自学笔记将深入探讨Struts2的文件上传机制。 1. **文件上传原理** 文件上传是基于HTTP协议的POST请求实现的。在HTML表单中,通过`<input type="file" />`元素让用户选择本地文件。当用户提交表单时,浏览器会...
本篇超详细学习笔记将带你逐步深入理解Struts2的核心概念和运作机制。 首先,让我们了解Struts2的基本特性。Struts2是一个基于Servlet的框架,它通过将JSP作为视图(View),Servlet作为控制器(Controller),并将...
在本入门笔记中,我们将逐步了解如何开始使用Struts1。 首先,Struts1的核心组件包括前端控制器ActionServlet,它作为整个应用的入口点,负责处理所有的HTTP请求。ActionServlet会解析请求,根据配置文件(通常位于...
自学传智博客struts2-黎活明-源码-第01讲_01介绍struts2及struts2开发环境的搭建_DemoStruts2.rar; 笔记地址:http://www.guloulou.com/?p=1253
在本文中,我们将深入探讨Struts2的主要特点、与Struts1的对比,以及如何创建一个简单的Struts2 HelloWorld应用。 首先,让我们看看Struts2与Struts1之间的关键区别: 1. **Action实例管理**: - 在Struts1中,...
本资源“自学传智博客struts2-黎活明-源码-第02讲_02第一个struts2应用开发_DemoStruts2.rar”提供了黎活明老师在传智博客上讲解的第一个Struts2应用的开发示例,帮助初学者理解并实践Struts2的核心概念和使用方法。...
总结来说,这个J2EE自学笔记不仅涉及了核心框架Struts的使用,还涵盖了与J2EE相关的PHP语言、开发工具MyEclipse以及基础环境JDK的使用。通过提供的七个小项目,你可以深入理解JSP在Web应用中的作用,并通过实践来...
《传智播客2016版hibernate+struts2+Spring框架学习资源详解》 在IT行业中,框架的使用是开发高效、稳定应用的关键。本资源包聚焦于三大主流Java Web框架:Hibernate、Struts2和Spring,它们在2016年时仍然是开发者...
SSH自学笔记主要涵盖的是Secure Shell(SSH)协议的使用、配置和相关的重要知识点。SSH是一种网络协议,用于安全地远程登录到服务器,进行文件传输,以及其他命令行操作。以下是一些核心的学习点: 1. **SSH基础...
Java自学笔记概述 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。这份“java自学笔记”涵盖了从基础到进阶的多个Java知识点,旨在帮助初学者系统地学习并掌握...
经典的struts自学宝典,都是我的潜心专研,精心总结出来的
总的来说,这份“达内学习笔记,java笔记”是Java初学者和进阶者宝贵的自学资料,它将帮助学习者巩固Java基础知识,理解Struts框架的使用,并且提升JavaScript的实战技能,为成为一名合格的Java开发者打下坚实的基础...
下面,我将根据标题“JavaWeb自学的心得和笔记”以及提供的文件名称,详细阐述一些关键的知识点。 首先,JavaWeb是基于Java语言进行Web应用开发的框架和技术集合。它包括了Servlet、JSP、JSTL、EL表达式、过滤器、...
"北京圣思园javaweb课件和笔记"很可能是某次培训课程或自学资源,包含了关于这个主题的详细讲解和学习记录。 在JavaWeb开发中,基础知识点主要包括: 1. **Servlet与JSP**:Servlet是Java编写服务器端应用程序的...
`controllerKey` 可包含正斜杠,如 `/admin/article`,这类似 Struts2 中的命名空间功能,帮助组织和管理控制器层次结构。 2. **表单提交与Web配置** 当用户在页面上填写表单并提交时,如 `...
马士兵Struts2学习笔记2011.doc可能涵盖了Struts2的基本概念、配置、动作调度、拦截器、结果类型等内容,以及如何结合其他技术如JSP、Servlet来实现一个完整的Web应用。 2. **Hibernate**: Hibernate是一个对象...
看的东西不在多,而在于精, 程序设计最重要的就是上级操作了, 既然选择了,就该要有坚持的觉悟... Cookie使用. ...里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是一些基础性的概念总结。
虽然现在Struts2已经较过时,但了解其工作原理对理解现代框架如Spring MVC仍然有帮助。 9. **JSP (JavaServer Pages)**: JSP是一种动态网页技术,它允许在HTML页面中嵌入Java代码,以实现动态内容的生成。JSP与...