Struts2- 一步步的发生史

Struts2--- 一步步的产生史

struts2一步步的产生史

1 JSP:

       在早期的web应用中使用的都是html的静态页面,jsp通过在HTML文件中嵌入java脚本,实现了页面动态。HTML标签负责布局和显示外观。java代码负责提取动态数据,实现业务逻辑。对于简单的应用,这种方式能够简化开发难度,加快开发速度,但是同时也带来了问题,对于较大的项目,大量的html与java代码混杂在一起,导致页面显示逻辑和业务逻辑混乱,是代码的可读性差,维护比较困难。

       为了分离显示和业务逻辑,sun公司制定了两种jsp开发模式model1和model2。

2 model1 :

        使用jsp和javabean技术将页面显示和业务逻辑分开。jsp负责页面显示,想javabeans提交请求,javabeans用来实现业务逻辑和处理数据。

Struts2- 一步步的发生史

        从图中不难看出,jsp负责处理请求,并将处理结果返回。所有的数据通过javabeans处理,jsp负责显示。但是它也存在着弊端,对于大型的应用系统,在页面中大量的java语句将页面逻辑和业务逻辑混杂,不易理解和维护。

3 model2 

       在model1中,jsp页面嵌入了流程控制代码和部分的逻辑处理代码,将这部分代码提取出来,放到一个单独的角色中,这个角色就是控制器角色,而这样的web架构就是model2。model2符合mvc架构模式

Struts2- 一步步的发生史

Servlet充当控制器的角色,它接受请求,并且根据请求信息将他们分发给形影的jsp页面来产生响应。Servlet控制器还根据jsp视图的需求生成javabeans的实例并输出给jsp。采用model2的高价购,可以将页面的显示、业务逻辑的处理和流程的控制和清晰的区分开,jsp负责数据的显示,javabeans负责承载数据以及业务逻辑的处理,servlet负责流程的控制。前端页面设计人员和后端java开发人员同步开发,互不干扰。

4 web框架--struts

基于mvc架构模式开发的web应用程序,容易出现多个控制器,在编写控制器时,页面导航的处理也比较复杂。通过对基于mvc框架web应用程序进行分析。
相同:
        (1)所有的请求直接访问controller,由控制器对请求进行分发。
        (2) 控制器实例化javabean对象,有javabean对象处理业务逻辑,和处理数据。
        (3)控制器根据请求处理的结果,向用户呈现相应的视图。
不同:
(1)用户请求URL的不同应用了不同处理单元
(2)不同表单提交的数据需要不同的javabean对象来保存数据
(3)请求处理结果的不同导致控制器向用户呈现视图的不同。
根据这些相同不同之处, 可以开发一款web软件,它按照mvc架构实现整个调用流程,对于需要变化的地方采用外部配置文件的方式来解决。有了这种灵活配置的方式,就可以把web软件开发成一个平台,提供给其他开发者使用,web框架诞生。使用web框架减轻了我们开发web应用的负担,提高开发效率,降低维护成本。
web框架有很多,比如Struts、WebWork、Spring MVC、Tapestry、JSF、WebPage3.0。后面的内容中讲继续介绍struts框架。

4.1 struts1 

4.1.1 struts1的结构图:

Struts2- 一步步的发生史

(1)控制器

struts1的控制器有两部分组成,一部分是actionservlet,这个类继承自httpservlet,有struts1提供,作为*控制器,它根据用户请求选择相应的action类对请求进行处理。另一部分是action类,负责创建业务组件,调用业务组件方法完成业务逻辑,有开发人员编写,struts1框架提供了action基类,我们编写action类的时候需要继承Action基类。

(2)模型

模型分为2部分,一部分是struts1框架规定的form bean对象,负责保存提交的表单数据。另一部分由开发人员为本系统的业务逻辑而编写的业务组件类。

(3)视图

struts1 框架支持JSTL、JSF、XSLT等

4.1.2 缺点

 actionform麻烦
struts是属于表现层的技术,在struts中,为了接收表单的数据,我们必须编写要给从struts的actionform类继承的类,否则只能从httpservletrequest中提取数据。使用actionform继承的类,如果更换web框架,这个类也将被废弃。

4.2 struts2 

struts1设计上的缺陷,使得他越来越无法满足开发人员要求高效、灵活的开发需求。webwork框架的产生为struts带来了新的生命,webwork解决了struts1的actionform问题,在webwork中可以使用普通的javabean对象,甚至action本身来接受表单数据。webwork与struts的共同整合开发完成新的struts2 。struts2是在webwork2的基础上进行开发的,struts2 其实是webwork2.3,它和struts1没有什么关系。

总结:

       根据struts2的产生来看,一种框架的产生和技术的产生和发展都是在需求的推动下,以及现有技术存在的问题而产生的。