阅读更多

28顶
7踩

企业架构

翻译新闻 Apache Struts 2.2.3 发布

2011-05-09 09:31 by 正式编辑 hantsy 评论(42) 有21107人浏览

Apache Struts 团队发布了最新的 Struts 2.2.3 GA(GA代表最高质量)。

下载地址:http://struts.apache.org/download.cgi#struts223

同时通过  Maven repository 对外提供,Group ID 为org.apache.struts。

Apache Struts 2.2 系列对规范的最低要求: Servlet API 2.4, JSP API 2.0, and Java 5.

本版本发布详细说明参见:http://struts.apache.org/2.2.3/docs/version-notes-223.html

使用任何版本的 Struts时,如果发现问题,可以提交到邮件列表,当然也可以提交一个Bug到JIRA中。

 

 

 

 

 

 

28
7
评论 共 42 条 请登录后发表评论
42 楼 allenny 2011-05-12 16:15
Struts1,2都用过,感觉还是Tapestry好,设计理念很有特点,视图与逻辑分离的很彻底。
41 楼 cpsing 2011-05-11 17:34
volking 写道
sourceforge.net 被GFW过滤,
nmb

没有吧,北京联通正常
40 楼 volking 2011-05-11 17:21
sourceforge.net 被GFW过滤,
nmb
39 楼 kjj 2011-05-11 10:37
hantsy 写道
Struts 2中OGNL是一大问题(需要重新学习,性能低下,Tapestry5放弃它的原因也在此),应该支持JSTL方式,或者变成Pluginable的方式,让用户选择。
另外对于最新的标准(JSR303,JSR299, JSR330等等,没内置支持),AJAX支持实在不好。

貌似,ognl需要重新学习很困难似的
性能底下,有多么低下,有对比资料吗,对系统的影响有多么大
jstl本身就支持,是你没用而已!!!
38 楼 hantsy 2011-05-11 10:28
Struts 2中OGNL是一大问题(需要重新学习,性能低下,Tapestry5放弃它的原因也在此),应该支持JSTL方式,或者变成Pluginable的方式,让用户选择。
另外对于最新的标准(JSR303,JSR299, JSR330等等,没内置支持),AJAX支持实在不好。
37 楼 77tt77 2011-05-11 09:47
都还没用过spring mvc.一直用struts2
有机会用下。
36 楼 ln1058 2011-05-11 09:28
用struts2就应该取其精华,去其糟粕。
我在项目中用只用struts2的拦截器和监听器。
用那些set/get方法传值到页面基本不用,还是用标准的request。struts标签一直就没用过,还是用最原始的JSTL。
个人认为这样结合spring应该算得上是最佳实践了吧
35 楼 7454103 2011-05-11 09:13
引用
支持 spring3 mvc , 谁用谁知道。

  大家都知道!
34 楼 rentianchou 2011-05-10 17:57
suyulin6688 写道
支持 spring3 mvc , 谁用谁知道。

确实是这样滴
33 楼 suyulin6688 2011-05-10 16:29
支持 spring3 mvc , 谁用谁知道。
32 楼 bonepole 2011-05-10 14:49
spring3 mvc 很好很强大
31 楼 油炸大龙虾 2011-05-10 13:24
评论都看过一遍了,呵呵。
善意的提醒,你们去看看国人挖掘struts2安全性的bug分析,我是看这里的
www.inbreak.net
如果说我是广告贴,那我也没办法,呵呵。jeye水缸已经够大了。
30 楼 白糖_ 2011-05-10 10:00
struts2沉寂太久了,效率比不上spring mvc
只能期待3.0后的效果
29 楼 skzr.org 2011-05-09 23:58
我的数据,是指的“Requests per second”
ab -n 10000 -c 10 连续测试同一个请求3次后的结果
笔记本 core2 P8400, 4G mem ubuntu 64bit系统jdk1.6.24 64bit
jvm options:-server -Xms2048M -Xmx2048M
请求只是一个简单的controller到jsp hello world!页面

当然我相信如果在台式机上测试的话比我的笔记本快多了。
同时测试时直接用localhost来排除网络IO对测试结果的影响

mlw2000 写道
skzr.org 写道

以下是我总结的为什么选择spring:
1. 看好spring mvc的速度+spring生态环境的欣欣向荣
2. Spring生态:从安全到各种服务集成具有天生的优势
3. Spring对REST的支持

附带,MVC测试:
tomcat maxThread=10;使用ab -n 10000 -c 20 测试一个helloworld control!
1. spring3 mvc访问jsp速度高达5、6K/s
2, spring3 mvc采用freemarker速度高达5、6K/s
3. struts2(关闭log,关闭开发模式) mvc最高还达不到2K/s
  i. struts2中使用interceptor-ref=basicStack 或者 使用empty interceptor 可以接近2.2k/s


给出测试程序和测试环境,让大家看真实的对比,不知道你说的"5、6K/s"是指什么,"Requests per second"还是"Transfer rate"?
下面是我简单测试结果:
Document Path:          /struts2/example/hello-world-ftl.action?name=name
Document Length:        153 bytes

Concurrency Level:      20
Time taken for tests:   29.405 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      29400882 bytes
HTML transferred:       15300459 bytes
Requests per second:    3400.80 [#/sec] (mean)
Time per request:       5.881 [ms] (mean)
Time per request:       0.294 [ms] (mean, across all concurrent requests)
Transfer rate:          976.43 [Kbytes/sec] received

28 楼 paramore 2011-05-09 22:25
小丑真多啊
27 楼 jackra 2011-05-09 20:17
servlet3.0多牛啊。。。。搞什么struts。。。。
26 楼 kjj 2011-05-09 19:27
油炸大龙虾 写道
破烂框架,没事干就喜欢自定义,处处给人挖坑。人家应用服务器打造出来多少年的安全性都给你毁了。这个就是为啥一直struts1的原因。

功夫不行,还瞎嚷嚷,嫌菜刀不利!!!!!!!!!!
25 楼 mlw2000 2011-05-09 18:10
skzr.org 写道

以下是我总结的为什么选择spring:
1. 看好spring mvc的速度+spring生态环境的欣欣向荣
2. Spring生态:从安全到各种服务集成具有天生的优势
3. Spring对REST的支持

附带,MVC测试:
tomcat maxThread=10;使用ab -n 10000 -c 20 测试一个helloworld control!
1. spring3 mvc访问jsp速度高达5、6K/s
2, spring3 mvc采用freemarker速度高达5、6K/s
3. struts2(关闭log,关闭开发模式) mvc最高还达不到2K/s
  i. struts2中使用interceptor-ref=basicStack 或者 使用empty interceptor 可以接近2.2k/s


给出测试程序和测试环境,让大家看真实的对比,不知道你说的"5、6K/s"是指什么,"Requests per second"还是"Transfer rate"?
下面是我简单测试结果:
Document Path:          /struts2/example/hello-world-ftl.action?name=name
Document Length:        153 bytes

Concurrency Level:      20
Time taken for tests:   29.405 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      29400882 bytes
HTML transferred:       15300459 bytes
Requests per second:    3400.80 [#/sec] (mean)
Time per request:       5.881 [ms] (mean)
Time per request:       0.294 [ms] (mean, across all concurrent requests)
Transfer rate:          976.43 [Kbytes/sec] received
24 楼 cw550284 2011-05-09 17:48
不要比较性能,如果要性能就直接servlet
23 楼 jansel 2011-05-09 17:30
用惯Struts2了,Struts2的架构很不错,不过性能真的是个问题。

但是性能的瓶颈是在OGNL上面,不知道用了最新的OGNL性能会不会提高,或者用MVEL。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Delphi的OverRide、OverLoad和Virtual方法

    1.方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。 如果在一

  • delphi 之 override overload

    delphi 之 override overload override 参数与返回值要与父类相同 overload 参数或返回值与父类不同 若参数有默认值, 例如:function GetIndexFileName: string; function GetIndexFileName(aIndexType:string = 'OFI'): string; 则调用时GetIndexFileName 会不清楚调用哪个函数 ...

  • delphi-多态(overload,override)与接口(interface)

    delphi-多态(overload,override)与接口(interface) 先来聊聊重载问题(也叫超载,总之是那个Overload)吧。在同一个类中,出现多个同名的方法的现象就是Overload。联系起上面提到的兄弟俩,我想这更好理解。他们从外观上是相似的,不同的是某些“参数”,类型上可能各异或是个数上不同。 在Delphi中,所有方法都默认是静态的,便于编译器和链...

  • delphi中对override(重写)和overload(重载)的一些看法

     重写就是用现在的方法覆盖了继承过来的方法,重载就是在不改变继承过来的方法的基础上重新添加一个方法名字一样,但参数或返回值是不一样的。下面举个例子:unit Unit1;interfacetype TStudent=classprivate//...    public//...procedure test;   implementation     procedure

  • delphi中使用override需要注意的地方

    在override时,如果override的是procedure,则加上关键字inherited; 就会执行父类同名procedure的所有过程,然后再执行子类中特有的过程。如果override的是function则不会执行父类中同名function的内容。但是,可以通过下面的方法来执行父类的内容:        例如:     TBaseCls = Class     public

  • Delphi的OverRide、OverLoad、Virtual、Dynamic、Static方法

    <br />1.方法的重写Overriding 和重载Overloading 是Java多态性的不同表现 。重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading 是一个类中多态性的一种表现。<br /> 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding )。<br /> 子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。<br /> 如果在一个类中定义了多个同名的方法,它们或有

  • 【Delphi 基础知识 11】重载函数的使用

    总体而言,重载函数的使用范围很广泛,可以在许多不同的编程场景中提高代码的可读性和灵活性。字符串处理: 在字符串处理中,可能会有不同版本的函数,用于连接、比较、格式化等,以适应不同的参数类型或处理需求。重载函数可使代码更通用。容器类和集合操作: 在处理数组、列表、集合等数据结构时,重载函数可以处理不同类型的元素或执行不同的操作。API设计: 在设计类库或API时,重载函数可以提供更自然、直观的接口,以适应不同的使用情境。图形编程: 在图形编程中,可以使用重载函数来处理不同类型的图形对象,如圆形、矩形等。

  • C++中重载(overload)、重写(override)和隐藏的区别

    一、重载(overload) 指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。 (1)相同的范围(在同一个类中) ; (2)函数名字相同; (3)参数不同;(参数的类型,个数,顺序不同) (4)virtual 关键字可有可无。 (5)返回值可以不同; 二、重写(也称为覆盖 override) 是指派生类重新定义基类的虚函数,特征是: (1)不在同一个作用域(分别位于派生类与基类) ; (2)函数名字相同; (3)参数相同; (4)基类函数必须有 vi

  • Delphi 中记录操作重载(Operator Overloading)

    本文介绍很少有资料介绍的记录操作重载方法,非常有用,特别是在分析一些大型源代码的时候,这类语法很少资料介绍。

  • 悟透delphi 第一章 delphi的原子世界

    经过多方查找,总算基本找齐战哥的处女作《悟透delphi》的手稿。不敢独占,于是拿出来于大家共享。 第一章  DELPHI的原子世界第二章  DELPHI与WIN32时空第三章  多线程第四章  接口第五章  包第六章  事件与消息第七章  组织你的模块第八章  探索数据库第九章  多层体系结构第十章  操作界面与操作逻辑第十一章  面向对象数据库基础本书原著李战(leadzen)

  • 方法重写(override)和方法重载(overload)的区别

    1.什么是方法的重载?        重载的存在是为了解决调用方法时,出现方法名不同,但参数列表不同的情况,比如类的构造方法就常用到方法的重载,调用构造方法创建对象时,传入不同的参数就可以方便的对属性赋值或者不赋值。2.什么是方法的重写?        重写的存在是为了解决子类调用父类的方法时,对父类的方法的得到的结果不满意,想拥有自己想要的结果,就对父类的方法进行了重写。3.方法的重载和方法的重...

  • Delphi面向对象:overload与override

    首先,我想单独说明一下overload,为什么呢?因为overload和对象化关联不大,所以,我感觉单独提出来说明比较好。    我们都知道,在Pascal语法规则中,同一个UNIT里是不能存在两个同名的函数的,例如:  代码:function func(): Boolean;function func(const x: Char): Boolean;这样是会出语法错误的,

  • delphi 重载 重写_Delphi方法重载和默认参数

    delphi 重载 重写 Functions and procedures are an important part of the Delphi language. Starting with Delphi 4, Delphi allows us to work with functions and procedures that support default parameters (maki...

  • Delphi 重载方法与重定义方法

    转载于:https://www.cnblogs.com/fanweisheng/p/11406338.html

  • C++覆盖系统函数的方法

    在编写程序时,我们有时会有覆盖系统函数的需求。比如针对glibc中fork线程不安全的bug,我们可以在程序中实现一个特定的fork,伪代码如下: pid_t fork(void) { lock(); fork();//system call unlock(); }将这个程序编译为myfork.o。 我们的目标是,对于所有使用fork的库,当我们同时链接myfork

Global site tag (gtag.js) - Google Analytics