struts1和struts2的区别

问题描述

如题

解决方案

解决方案二:
—在Action实现类方面的对比:Struts1要求Action类继承一个抽象基类;Struts1的一个具体问题是使用抽象类编程而不是接口。Struts2Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用作Struts2的Action。—线程模式方面的对比:Struts1Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的;Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。—Servlet依赖方面的对比:Struts1Action依赖于ServletAPI,因为Struts1Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts2Action不再依赖于ServletAPI,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts2Action仍然可以访问它们。但是,大部分时候,Action都无需直接访问HttpServetRequest和HttpServletResponse,从而给开发者更多灵活的选择。—可测性方面的对比:测试Struts1Action的一个主要问题是execute方法依赖于ServletAPI,这使得Action的测试要依赖于Web容器。为了脱离Web容器测试Struts1的Action,必须借助于第三方扩展:StrutsTestCase,该扩展下包含了系列的Mock对象(模拟了HttpServetRequest和HttpServletResponse对象),从而可以脱离Web容器测试Struts1的Action类。Struts2Action可以通过初始化、设置属性、调用方法来测试。—封装请求参数的对比:Struts1使用ActionForm对象封装用户的请求参数,所有的ActionForm必须继承一个基类:ActionForm。普通的JavaBean不能用作ActionForm,因此,开发者必须创建大量的ActionForm类封装用户请求参数。虽然Struts1提供了动态ActionForm来简化ActionForm的开发,但依然需要在配置文件中定义ActionForm;Struts2直接使用Action属性来封装用户请求属性,避免了开发者需要大量开发ActionForm类的烦琐,实际上,这些属性还可以是包含子属性的Rich对象类型。如果开发者依然怀念Struts1ActionForm的模式,Struts2提供了ModelDriven模式,可以让开发者使用单独的Model对象来封装用户请求参数,但该Model对象无需继承任何Struts2基类,是一个POJO,从而降低了代码污染。—表达式语言方面的对比:Struts1整合了JSTL,因此可以使用JSTL表达式语言。这种表达式语言有基本对象图遍历,但在对集合和索引属性的支持上则功能不强;Struts2可以使用JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(ObjectGraphNotationLanguage),因此,Struts2下的表达式语言功能更加强大。—绑定值到视图的对比:Struts1使用标准JSP机制把对象绑定到视图页面;Struts2使用“ValueStack”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。—类型转换的对比:Struts1ActionForm属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换,每个类一个转换器,转换器是不可配置的;Struts2使用OGNL进行类型转换,支持基本数据类型和常用对象之间的转换。—数据校验的对比:Struts1支持在ActionForm重写validate方法中手动校验,或者通过整合Commonsalidator框架来完成数据校验。Struts2支持通过重写validate方法进行校验,也支持整合XWork校验框架进行校验。—Action执行控制的对比:Struts1支持每一个模块对应一个请求处理(即生命周期的概念),但是模块中的所有Action必须共享相同的生命周期。Struts2支持通过拦截器堆栈(InterceptorStacks)为每一个Action创建不同的生命周期。开发者可以根据需要创建相应堆栈,从而和不同的Action一起使用。
解决方案三:
网上一大把。
解决方案四:
我问这种问题别人也是给你百度下拷贝上来
解决方案五:

解决方案六:
真正要去了解他们的不同,最好的办法就是两个都去使用一下。
解决方案七:
struts2其实继承webworkd的属性更多些,与struts1差别很大
解决方案八:
如此说来,S2比S1强大多咯?
解决方案:
Struts2比Struts1轻量很多。Struts2核心是过滤器。
解决方案:
醉过方知酒浓..建议自己去试试,体会哈
解决方案:
虽说读书百遍其义自见。。。但我还是觉得咋这行就得多练。。。
解决方案:
先从网上搜索资料,很多的。关键还是靠自己去理解,我一开始也没去仔细理解,但是做过几个项目后再回头来看,理解就会加深多了。
解决方案:
根本区别:struts1是MVC框架,而struts2是基于webwork框架的!
解决方案:
SSH用上struts2那确实是代码变的非常少了。去练练手就知道了。
解决方案:
1.struts1需要自己写formbean来匹配form表单,struts2自动匹配form表单。2.struts1和struts2的配置文件不同,相应的配置代码也不同。3.struts2并不是struts1基础上的升级版,不如说是webwork的升级版。struts2和struts1思想一样但是差别很大
解决方案:
S1对于初学者而言,出错的机会要少。S2不小心就会配置出错,IDE还无法告诉你。
解决方案:
现如今的主流是struts2,如果是初学者的话,struts1就没必要了解了!
解决方案:
该回复于2010-11-06 10:04:30被版主删除
解决方案:
struts1+webwork=struts2实质struts2核心是webwork,相对struts1,struts2的优势更多,网上一堆堆,否则也不会有struts2了,具体就不一一列举了。struts1唯一就是比struts2更节约内存,只创建一个对象。
解决方案:
用Struts1那还有人知道有Servlet这么个东西存在。用Struts2那纯属速成型的!
解决方案:
引用19楼bao110908的回复:

用Struts1那还有人知道有Servlet这么个东西存在。用Struts2那纯属速成型的!

呵呵。用Tapstry5以后,连Session,Application,request,response基本上也不知道了
解决方案:
不很清楚,我也来学习下
解决方案:
自己分别做个SSH1和SSH2的项目你就了解了
解决方案:
引用22楼wulinshishen的回复:

自己分别做个SSH1和SSH2的项目你就了解了

]是S2SH和S1SH
解决方案:
Struts2是基于WebWork的一个全新框架.Struts2主要改进是取代了Struts1的Servlet和Action.Struts2的核心框架是当作一个filter来实现其功能的,而Struts1是ActionServlet.然后在Action上,Struts1都少不了要传递Request等参数,还要继承Action父类,而Struts2只要实现了一个publicStringexecute()就可以了,这样Action就可以实现脱离Servlet测试.Struts2还提供了拦截器(Interceptot)等Struts1所没有的技术.总的来说,两个都需要理解,这样才能正确理解他们的区别。现在好像是struts2用的多了。
解决方案:
2楼这么职业啊!!!
解决方案:
引用19楼bao110908的回复:

用Struts1那还有人知道有Servlet这么个东西存在。用Struts2那纯属速成型的!

+
解决方案:
标记一下。
解决方案:
谷歌、百度都行,针对网上的回答,可以自己做一下,亲身体会更好
解决方案:
不想到google去下东西粘贴给楼主,我觉得还是工作中慢慢理解为好,只有用过才知道顺便在这里发下我的Android技术交流群:93551939希望大家进来学习!能来些高手更好,帮大家解决问题,帮助大家,谢谢了!
解决方案:
用过struts2就痛恨struts1,但现在的公司就是用struts1真是无耐。。。

时间: 2024-08-03 18:07:30

struts1和struts2的区别的相关文章

Struts1和Struts2的区别和对比

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

struts1和struts2的线程安全问题

问题描述 我在struts2权威指南中看到介绍struts1与struts2的区别的时候说struts1是线程安全的.网上又有许多人说struts1是非线程安全的!我这个地方有底迷糊了,请高手来说一下,struts1和struts2到底是线程安全的还是非线程安全的,麻烦说下各位大虾是怎么分析的.谢谢 解决方案 解决方案二:Struts2的Action设计就不像Struts1的Action或者Servlet那样是单实例了.Struts2的Action的设计哲学是每次请求来了,都创建一个实例了.因此

struts1 与struts2 有什么区别 菜鸟提问

问题描述 struts1与struts2有什么区别菜鸟提问 解决方案 解决方案二:两者的区别:Action类:◆Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口.◆Struts2Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能.Struts2提供一个ActionSupport基类去实现常用的接口.Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对

请问一个web工程中,是否可同时使用struts1和struts2?

问题描述 请问一个web工程中,是否可同时使用struts1和struts2? 请问一个web工程中,是否可同时使用struts1和struts2? 解决方案 理论上可以,但是要非常小心,比如重名的类型,还有url映射和配置文件.建议你独立成两个网站,互相调用. 解决方案二: 最好是不要同时使用, 很容易出错. 解决方案三: 应该可以,你确定这样用了方便以后维护吗? 解决方案四: struts2不是夸张1吗,有需要给自己找麻烦吗 解决方案五: 在原来的struts1的项目上需要新功能,你想用st

struts1与struts2的对比学习

           struts2的出现必定有它的优势,而且他的市场现在已经远远的超过了struts1,那么在解释它的原理之前,我们首先来看一下struts2究竟有哪些优势呢?我们为什么要用struts2?          1.用struts2的目的~~           把请求和界面分开,struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发.           2.那么struts2有哪些优点呢?             a.Struts框

【SpringMVC整合MyBatis】springmvc和struts2的区别

springmvc和struts2的区别  1.springmvc基于方法开发的,struts2基于类开发的. springmvc将url和controller方法映射.映射成功后springmvc生成一个Handler对象,对象中只包括了一个method.方法执行结束,形参数据销毁. struts2的action类中的所有方法用的都是action类中的成员变量,一旦方法变得很多的时候,我们就会不知道action类中那么多成员变量是给那个方法去使用的.十分混乱. 但是springmvc的所有参数

浅析Struts1和Struts2的Action线程安全问题

这是由于Servlet的工作原理产生的.我们先来简单回顾一下Servlet的生命周期"初始化->init->service->destroy->卸载". 这里大家都知道,我们在web.xml里面定义一个servlet的时候,我们可以给他们设置一个"load-on-startup" 的值,如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化,并且tomcat给每一个serv

servlet、struts1和struts2的线程安全问题

一.servlet和struts1 通常情况下,系统只生成servlet的单一实例之后,为每个用户请求建立新的线程.如果很多请求同时到来,那么多个线程可能会并发的访问同一个servlet对象.因此必须小心地同步对字段以及实例变量和其它共享数据的访问,因为多个线程可能同时对同一数据进行访问.所以使用实例变量会产生不安全的结果.struts1也是这种单例模式. servlet和struts1均是单实例.多线程,在不加锁的情况下尽量不要使用局部变量等带来线程不安全的变量,只有请求和局部变量时线程安全的

struts2基本配置

 Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西).Struts2实际上是在Webwork基础上构建起来的MVC框架.我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包. 1.web.xml的作用 web.xml核心代码: <filter> <filter-name>struts2</