- 浏览: 1273299 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (499)
- java (101)
- linux (82)
- mysql (30)
- javascript (45)
- Oracle (12)
- ext (14)
- 虚拟机 (1)
- 搜索引擎 (2)
- struts2 (11)
- 设计模式 (9)
- nginx (17)
- tomcat (12)
- 随想 (10)
- spring (18)
- svn (1)
- flash (3)
- UML (1)
- 数据结构 (7)
- 算法 (2)
- 网摘 (9)
- 数据库 (15)
- ibatis (3)
- jquery (31)
- lucene (1)
- hibernate (14)
- Myeclipse (4)
- 线程 (7)
- jbpm (4)
- 重构 (1)
- mantis (3)
- MediaWiki (4)
- ExtMail (1)
- MDaemon (1)
- egit (1)
- dwr (7)
- sitemesh (2)
- mybatis (1)
- ico (1)
- hadoop (5)
- jsoup (1)
- urlrewrite (2)
- jstl (1)
- spring3 (2)
- aop (2)
- 定时器 (1)
- Quartz (2)
- apache (1)
- php (1)
- security (1)
- iptables (2)
- QQ (1)
- mysqldump (1)
- vim (1)
- memcached (4)
- jad (1)
- 微博 (1)
- html5 (1)
- css3 (1)
- httpclient (10)
- google (1)
- shortUrl (1)
- json (2)
- virtualBox (1)
- mantisBT (2)
- htmlunit (1)
- selenium (2)
- mail (1)
- 正则表达式 (4)
- html (3)
- css (2)
- jatoolsPrinter (1)
- 图片处理 (1)
- hql (1)
- webservice (1)
- 分词 (3)
- 短信 (1)
- VPS (1)
- 事务 (1)
- 广告 (1)
- 画廊 (1)
- git (3)
- github (1)
- openshift (1)
- 缓存 (1)
- web (3)
- android (3)
- c3p0 (1)
- 邮箱 (1)
- memcache (2)
- windows (2)
- js (14)
- 编辑器 (1)
- 打印 (1)
- centos (5)
- boneCP (1)
- 连接池 (1)
- sql (1)
- nosql (1)
- MongoDB (1)
- 浏览器 (1)
- node (1)
- node.js (1)
- backbone.js (1)
- lazyload (1)
- Switch Off (1)
- Titanium (1)
- 网站架构 (1)
- WebDriver (1)
- APJP (1)
- 代理 (1)
- comet (1)
- kendoui (1)
- UI (2)
- 互联网 (1)
- localStorage (1)
- 记录 (1)
- 微信 (2)
- Sphinx (1)
- netty (1)
- js,mvvm,Avalon (1)
- 安卓 (1)
- Tengine (1)
- 大数据 (1)
- 手机 (1)
- paypal (1)
- SaaS (1)
- gitlab (1)
- nodejs (1)
- React (1)
- shadowsocks (0)
- vpn (0)
- 验证码 (1)
- SSL (2)
- SEO (1)
- IntelliJ (1)
- 敏捷开发 (1)
- 项目管理 (1)
- 爬虫 (1)
- 正则 (1)
- owncloud (1)
- 云存储 (1)
- ajax (1)
- pjax (1)
- jdk (1)
- zookeeper (1)
- phantomjs (1)
- ELK (1)
- springcloud (1)
- IDEA (1)
- hexo (1)
- ss (1)
- letencrypt (1)
最新评论
-
peakandyuri:
这个是有BUG的,数字小体现不出来,数字大了就不对了,但是Ja ...
java十进制转换N进制并反转换的工具类 -
ginolai:
然后是相关配置:/etc/sysconfig/iptables ...
Linux中iptables设置详细 -
bzhao:
我测试没啥区别啊!
Thread.sleep()和Thread.currentThread().sleep()区别 -
zhl549342097:
match == false
Spring Security 3.1 中功能强大的加密工具 PasswordEncoder -
hellotieye:
renzhengzhi 写道drager 写道用jsoup后解 ...
jsoup select 选择器
Struts2与Struts1的对比
来源:struts2开发组 翻译:tianxinet(胖猴)
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一起使用。
发表评论
-
2017年Struts漏洞修复:版本从2.3.15.1升级到2.3.32
2017-03-24 15:10 2008如果你当前的项目使用了Struts2.3.5至 Strut ... -
struts2国际化信息
2011-12-06 15:44 11721.资源文件 中文文件messageResour ... -
struts2中action的重定向和转发的设置
2011-12-04 18:39 3049<?xml version="1.0&quo ... -
Myeclipse自动加入struts 2 Core Libraries导致antlr错误
2011-12-02 18:31 1042解决方法: 选择windows---preferences- ... -
struts2拦截器简单介绍
2011-10-18 22:10 1126一、理解Struts2拦截器 1. Struts2拦截器是在 ... -
struts1与struts2的区别
2011-10-18 21:52 974本文是转载,来源互联 ... -
struts2初学之form上传
2010-04-13 17:41 1488以前struts1使用的FormFile我不是很喜欢,这下好了 ... -
struts2初学之form提交登录验证
2010-04-13 14:35 2546本篇介绍了struts2的最基本的form提交,并且使用了其P ... -
struts2初学之hello,struts2
2010-04-13 11:53 1207本篇应用了最基本的struts跳转程序来解释最基本的strut ... -
开始学习struts2
2010-04-13 10:01 1200说来惭愧,做了几年java技术基本都用的struts1,感觉跟 ...
相关推荐
Struts1和Struts2是两个非常著名的Java Web框架,它们都用于构建MVC(Model-View-Controller)架构的应用程序。尽管它们都是Struts家族的一部分,但它们在设计哲学和实现方式上存在显著差异。 首先,从Action类的...
6. **ValueStack**:ValueStack是Struts2中存储Action属性和请求参数的对象栈,使得在Action和JSP之间传递数据变得简单。 7. **Tiles框架集成**:Struts2可以与Tiles框架集成,方便地进行页面布局和组合。Tiles定义...
1. **Struts2框架概述**:首先,书中会介绍Struts2框架的基本概念,包括它的起源、发展和主要特点,以及与前一代Struts1的区别。 2. **安装与配置**:介绍如何在开发环境中安装Struts2框架,包括依赖库的添加、web....
5. **OGNL表达式语言**:OGNL(Object-Graph Navigation Language)是Struts2默认的表达式语言,用于在Action和JSP之间传递数据。Showcase展示了如何在Action中设置值,并在JSP中访问这些值。 6. **Action Mapping*...
- **配置方式**:Struts2支持XML和注解两种配置方式,而Struts1主要通过XML配置。 - **拦截器机制**:Struts2具有更加强大的拦截器机制,能够更好地控制业务流程。 - **类型转换与验证**:Struts2提供了更加强大...
7. **表达式语言(OGNL,Object-Graph Navigation Language)**:OGNL是Struts2默认的表达式语言,用于在Action和视图之间传递数据。它可以在JSP中直接访问Action的属性,也可以在配置文件中使用。 8. **插件体系**...
4. **表达式语言(Expression Language, EL)**:Struts 2支持使用OGNL(Object-Graph Navigation Language)作为默认的表达式语言,允许在视图层直接访问模型对象的属性,简化了视图和模型之间的数据绑定。...
总的来说,Struts2 使用 OGNL 提供了一种强大且灵活的方式来处理视图和模型之间的数据交互。通过深入理解 OGNL 的源码,开发者可以更好地利用这一特性,同时避免潜在的安全风险。对于想要深入了解 Struts2 和 OGNL ...
- **Struts2的体系结构**:Struts2采用拦截器栈作为其核心机制,这使得框架更加灵活,易于扩展和维护。 - **Struts2配置文件**:主要使用XML格式,用于配置Action、拦截器、结果类型等。此外,Struts2还支持使用...
5. **OGNL**:Object-Graph Navigation Language,Struts2中的表达式语言,用于在Action和视图之间传递数据。 **整合iBatis和Struts2的知识点:** 1. **Action与iBatis的结合**:Action中注入SqlSession或Mapper...
Struts2框架是一个强大的MVC框架,它继承了Struts1的优点并引入了许多新的特性,如拦截器、插件支持和强大的动作调度。Struts2的核心库包括以下几个部分: 1. **Struts2核心库**:struts2-core.jar,包含Action、...
这个版本的Struts2引入了OGNL(Object-Graph Navigation Language)表达式语言,使得在视图层和控制器层之间传递数据更加灵活。此外,它还支持AJAX功能,可以通过JSON或者XML进行异步数据交互,增强了用户体验。 接...
#### 一、Struts2与Struts1的主要区别 在探讨Struts2之前,我们首先需要理解它与前辈Struts1之间的重要差异。Struts1是基于Servlet API构建的MVC框架,而Struts2则在此基础上进行了重大改进,不仅简化了开发流程,...
3. **OGNL(Object-Graph Navigation Language)**:Struts2默认使用OGNL作为表达式语言,用于在Action和视图之间传递数据。在示例中,你可能会看到OGNL在JSP中的使用,如何访问Action属性、动态表达式等。 4. **...
首先,让我们深入了解一下Struts2框架。Struts2是Struts1的升级版,它弥补了Struts1的一些不足,如动作类的重复、过滤器的缺失等。Struts2的核心是Action类,它是处理用户请求的核心组件,通过配置Action映射,将...
2. OGNL在Struts2中的应用:OGNL是Struts2的默认表示层语言,用于在Action和视图之间传递数据,以及在Action配置中引用对象属性。 五、Struts2的扩展性 1. 自定义拦截器:开发者可以创建自定义拦截器来实现特定功能...
9. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2默认使用的表达式语言,用于在Action、值栈和视图之间传递数据。 10. **Struts2配置**:包括XML配置和注解配置,用于定义Action、拦截器、结果类型...
- OGNL是Struts2默认的表达式语言,用于在Action和视图之间传递数据。它支持复杂的对象导航和动态属性访问,使得在JSP中获取Action属性变得非常简单。 6. **结果类型(Result Types)**: - 结果类型定义了Action...
1. **配置集成**:Struts2的配置文件(struts.xml)会引用Spring2的配置文件(spring-context.xml),使得Action实例可以通过Spring的IoC容器管理,实现Action的依赖注入。 2. **Action与Service**:Struts2的Action...
Struts2内部广泛使用OGNL作为表达式语言,用于在Action与JSP之间传递数据,以及在配置文件中引用对象属性。 7. **动态方法调用(Dynamic Method Invocation,DMI)**: DMI允许通过URL直接调用Action的特定方法,...