`
yulon
  • 浏览: 117836 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

已经会struts1.x了为何还要学习struts2呢

 
阅读更多

一、首先,一个新版本的程序是为了解决老版本的一些bug而出世.一名话:没有最后的程序,只有更好的程序.这样的程序才会发展,而不会被淘汰出局. struts框架也是一样的. 我想,可能是struts1.x升级的过程中出现了瓶颈,有一些存在的问题很难得到解决,在这个时候,他们发现WebWork框架的总体设计思想非常好,并且他们发现,使用WebWork框架的思想正好可以很容易地解决struts1.x存在的问题.由于WebWork在推广方面做得不够好,于是两个社区决定把WebWork框架与struts1.x框架合并,简称为struts2.之所以struts2与struts1.x的区别比较大,就是因为struts2大部分的实现都是依靠WebWork框架里面的东西的.

 

 

二、struts2框架的优点及解决strus1.x存在的问题.

     2.1、在程序设计思想上看Struts2.

            Struts2并没有像struts1那样跟Servlet API和struts API有着紧密的耦合,在没有Struts2之前,基于struts1.x框架来解决这个问题几乎是不太可能的,我们都知道,在struts1.x里编写一个简单的Action类,是一定继承一个struts1.x 提供的类的(如继承Action类或DispatchAction类),这样就完全与struts API耦合在一起(可能在struts1.x当初开始设计的时候并没有考虑到这个问题,因此问题一直延续下去,问题存在得越久,发现得越晚,当要解决的时候就会越难.最后导致struts1.x出现瓶颈),如下就struts1.x定义的一个Action类:

public class UserLogonAction extends Action {
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		return mapping.findForward("success");
	}
}

    注意:可以看到UserLogonAction 同时跟Servlet API和struts API有着紧密的耦合关系.

 

        而Struts2的出现已经很好地解决了这个问题,一个简单的Action类如下:

public class UserLogonAction {
	public String execute(){
		return "success";
	}
}

    提示:可以看到,在struts2里定义一个Action类,其实就是一个简单POJO类,非常干净,没有半点Servlet API和struts API的影子.这是我们程序追求的一种思想:低耦合或松耦合设计模式.

 

   2.2、struts2很好地利用了AOP编程模式(即面向切面编程,在Spring框架也提供了这种编程模式),我们可以利用拦截器进行AOP编程,它不仅可以拦截指向的Action,还可以拦截指定Action内的某些方法(更加地细粒度)。其次,struts2里的很多功能都是通过struts2拦截器(Interceptor)来实现的.  Struts2的拦截器跟struts1.x的过滤的设计非常相似,但struts2拦截器要比其更为强大,它可以说是struts2的核心.(具体用法不在这里细说,想学struts2的程序员们可以参看我写的struts2两天快速入门教程)

 

   2.3、struts2也提供了类似struts1.x的类型转换器,但在struts1.x中,如果我们要实现同样的功能,就必须向struts1.x的底层实现BeanUtil注册类型转换器才行,实现起来较麻烦. struts2的类型转换器不仅编写简单,而且还提供节双向类型转换功能.

   

    2.4 、struts2提供支持多种表现层技术,如:JSP、freeMarker、Velocity、stream等.

   

    2.5 、struts2的输入校验可以对指定方法进行校验(更加的细粒度)。

   

    2.6、 提供了全局范围、包范围和Action范围的国际化资源文件的配置,这是一种模块化的思想. 

 

    2.7、Struts2是线程安全的.当请求转入Struts 2框架处理时会先经过一系列的拦截器,然后再到Action。与Struts1不同的是,Struts2对用户的每一次请求都会创建一个Action,所以Struts2中的Action是线程安全的.也正因为如此,Struts2的Action可以有自己的成员变量。同时拥有了Struts1.x的Form Bean的功能.Form Bean的存在在业界里有一些争议,认为Form Bean是一个很多余的角色,跟java实体类有些重复.因此在Struts2里,已经废弃了.

     其他细节上的区别,唯有大家使用过后才会有所体会.

 

三、总体来说,struts2可以提高开发效率,开发效率的提高必须使得公司总体收益增加.公司总体收益增加,老板就开心,老板开心,作为程序员的我们当然也就开心,说不定老板一开心,就会给你加薪.哈哈

 

 

分享到:
评论
13 楼 lucky16 2009-12-23  
确实是这样,最开始我也是学习的1.后来了解了2.
很快就上手了!确实比较容易理解
12 楼 玲cc 2009-12-23  
把http中的键值对转换为实体对象的过程确实比较麻烦
11 楼 jssay 2009-12-23  
太经典了!
10 楼 yuyue618 2009-12-23  
不管好不好,至少解决了我不少问题
9 楼 anky_end 2009-12-23  
我觉得webwork和struts1差别并不算太大

webwork无疑更先进强大,如果学会struts1再学webwork难度不高的。

不过ognl的语法还是让人稍微挠头些
8 楼 咖啡豆子 2009-12-23  
技术不断更新的一个好处就是可以让企业觉得他们的系统还需要一直做下去:)
7 楼 berlou 2009-12-23  
还是JSF的MVC好一点.
6 楼 donglangjohn 2009-12-23  
无论strut1或struts2等其他的mvc都有一个共同的瓶颈------http
从http获得的信息都是键值对,值的类型是无从得知的(除非多传参数,这样增大的网络负担)。
看看pojo是怎么获得的吧。

struts1是actionform  在action中得自己强制转换

struts2是pojo担当action与form,但还是少不了set get (用模型驱动的话就有侵入性了)

都是不过优雅!!!

以前robbin说是要写讨伐servlet的文章,期待中。
5 楼 tangbo530 2009-12-23  
为了拯救地球
4 楼 liu78778 2009-12-23  
为了不失业
3 楼 wander312 2009-12-23  
不过目前MVC的框架struts1.x还是占绝大部分.
2 楼 topcode 2009-12-23  
帅哥,我等你好久了
1 楼 wh870712 2009-12-23  
说的很好,但是有时候并不是想用谁就用谁啊,得跟着项目走!

相关推荐

    对struts1.x与struts2.x的区别的总结

    Struts1.x与Struts2.x是两种非常流行的Java Web应用程序框架,它们都由Apache软件基金会开发,旨在简化MVC(Model-View-Controller)架构的实现。然而,两者在设计哲学、功能特性以及实现方式上存在显著差异。以下是...

    Struts1.x常用的开发包,需要学习struts1.x朋友可以下载

    Struts1.x是一个经典的Java Web框架,由Apache软件基金会维护,它在2000年代中期至晚期广泛应用于企业级应用开发。这个框架基于Model-View-Controller(MVC)设计模式,帮助开发者构建结构清晰、可维护性强的Web应用...

    struts1.x和struts2.x区别

    ### Struts1.x与Struts2.x的主要区别 在深入探讨Struts1.x与Struts2.x的区别之前,我们先来了解一下这两个框架的基本背景。Apache Struts是用于构建企业级Web应用程序的开源框架,它提供了MVC(模型-视图-控制器)...

    struts1.x技术课程讲解.pdf

    ### Struts1.x 技术课程讲解 #### 一、Struts1.x 概述 ...通过以上内容的学习,学员将能够掌握 Struts1.x 的核心概念、工作原理及开发流程,进而能够独立开发基于 Struts1.x 的企业级 Web 应用程序。

    Struts1.x系列教程(网摘-全)

    Struts1.x是一款经典的Java Web开发框架,由Apache软件基金会维护,主要用于构建MVC(Model-View-Controller)架构的应用程序。本系列教程是针对初学者的全面指导,旨在帮助学习者快速掌握Struts1.x的核心概念和使用...

    struts1.x apps 所有最新的Struts1.x项目应用

    Struts1.x是一款经典的Java Web框架,由Apache软件基金会开发并维护。它是MVC(Model-View-Controller)设计模式的实现,极大地简化了Java Web应用程序的开发过程。本资源集合包含了所有最新的Struts1.x项目应用,为...

    struts1.x入门教程

    在学习Struts1.x的过程中,理解MVC模式以及ActionForm和Action的作用至关重要。此外,熟练掌握配置文件的编写,能让你更有效地组织和控制应用的流程。随着对框架的深入理解和实践,你将能够构建出更加复杂和功能丰富...

    java Struts 1.x 框架 Web 开发

    Struts 1.x 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,由 Apache 软件基金会开发并维护。它在20世纪末到21世纪初广泛应用于企业级Web应用开发,因其强大的功能和良好的社区支持而受到...

    Struts1.x_Project.zip

    通过分析这个Struts1.x_Project,我们可以学习到如何配置Struts框架,理解ActionForm、Action、Struts-config.xml的作用,以及如何实现I18N和表单验证。同时,项目的数据库操作部分也是Java Web开发中重要的实践环节...

    Struts 2.x权威指南(第3版)

    Struts 2.x权威指南(第3版)

    Struts1.x的登录示例

    然而,需要注意的是,Struts1.x已经较为过时,现代的Web开发更多地转向了Spring MVC、Play Framework或AngularJS等更现代的解决方案。尽管如此,理解Struts1.x可以帮助我们了解Web框架的发展历程,以及MVC模式在实际...

    Struts1.x-Jdbc,学习Struts1.的曾删改查

    通过以上知识点的学习,开发者可以熟练地在Struts1.x框架下利用JDBC进行数据库操作,实现Web应用的增删改查功能。在实际开发中,还需要结合具体项目需求,考虑数据缓存、安全性、可扩展性等因素,以构建高效、稳定的...

    魔乐科技Struts2.x框架笔记

    **Struts2.x与Struts1.x对比**:相较于Struts1.x,Struts2.x具有更多的优势,如不再强制要求ActionForm,配置文件更简洁,处理流程更加清晰。具体而言,请求首先被过滤器捕获,然后根据`struts.xml`文件的配置调用...

    搭建struts1.x的jar包

    Struts 1.x 是一个经典的Java Web开发框架,由Apache软件基金会开发,它极大地简化了MVC(模型-视图-控制器)架构的实现。如果你正在寻找如何搭建Struts 1.x的开发环境,以下是一些关键的知识点,以及这些指定的jar...

    freemarker for struts 1.x

    freemarker与struts 1.x 结合,生成html 在http://blog.csdn.net/chen1255 的web中有详细描述关于freemarker与struts1.x的结合

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    本篇文章将深入探讨Struts1.x和Struts2.x在向Action中填充JSP参数的原理。 Struts1.x的工作原理: Struts1的核心是ActionServlet,它是一个实现了Servlet接口的控制器。当用户发起HTTP请求时,请求会被Dispatcher...

    Struts2.X+Hibernate3.X+Spring2.5 整合

    标题"Struts2.X+Hibernate3.X+Spring2.5 整合"指的是将这三个框架的特定版本(Struts2.X,Hibernate3.X,Spring2.5)集成到同一个项目中,实现高效的企业级应用开发。这种整合能够充分利用各个框架的优势,使开发者...

    Struts1.x 中文帮助文档

    尽管现在Struts2已经成为主流,但Struts1.x的原理和知识仍然对理解Web应用开发有重要意义。 Struts1.x的核心概念包括: 1. **ActionServlet**:这是Struts框架的心脏,负责处理所有的HTTP请求。它根据配置文件中的...

    struts2.x jar

    Struts2.x是一个非常著名的Java Web开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用程序的开发。Struts2.x的核心是它的Action类,它处理HTTP请求,并与业务逻辑进行交互,然后将结果传递...

    Struts1.x入门与提高系列教程.pdf

    Struts 1.x 是Apache软件基金会Jakarta项目的一部分,是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架。它使用Java Servlet和JavaServer Pages技术实现,旨在简化基于Java EE的Web应用程序的开发。 本教程...

Global site tag (gtag.js) - Google Analytics