(一)Struts2框架概述

一、struts2发展历史

     经过很多年发展,Struts1已经成为了高度成熟的框架,但随着时间的发展,Struts1的局限性和缺点不断的暴露出来。 
     现在Struts已经分化成了两个框架 

     -第一个是在Struts1的基础上,融合了另一个web框架Webwork的Struts2.Struts2实质上是以Webwork为核心的,和Struts1有很大区别。
     -第二个是Shale,与原有Struts1关联很少,使用了全新的设计思想。

 

二、MVC思想概述

     java web动态编程技术,经历了Model和Model2时代。

     Model1时代:整个Web应用几乎全部由jsp页面组成,jsp页面接收处理客户端请求,对请求处理后直接做出响应,用少量的JavaBean来处理数据库连接访问等操作。Model1的局限性非常明显,jsp页面同时担任View和Controller两种角色,将页面表现和逻辑处理混杂在一起,代码重用性极低,增加了扩展和维护难度。

    Model2时代:已经采用了MVC的设计。在Model 2架构中,Servlet作为Controller,负责接收用户请求,只包含控制逻辑,然后调用后端来进行具体的逻辑处理。最后转发到相应的jsp页面负责显示。 

    MVC由Model(模型),View(视图),Controller(控制器)组成。

    javaWeb中的三层架构 
         表现层:MVC,struts2框架其实是对表现层的MVC作了优化 
         业务层:service 
         持久层:dao

 

三、Struts2环境的搭建

 

(1)下载Struts2  http://struts.apache.org/download.cgi 。

 

    目录结构
            apps:该文件夹下包含了基于Struts2的示例应用
            docs:包含了Struts2的相关文档 
            lib:包含了Struts2的核心类库,以及Struts2的第三方类库
            src:包含了Struts框架的所有源代码  

 

(2)创建web项目,导入struts2所需jar包,lib中有struts2的所有jar包,但是我们不需要那么多。

 

我们只把必需的添加到项目即可。将apps目录下struts2-blank.war压缩包中的lib目录下的jar包添加到我们项目中即可。这是struts2必需的jar包。 

 

 

四、struts2内部运行流程

 

这里写图片描述

 

(1)客户端发出HTTP请求

 

(2)然后请求被核心过滤器StrutsPrepareAndExecuteFilter拦截

 

(3)核心过滤器将请求转发到Action映射器,Action映射器负责识别当前的请求是否需要交由Struts2处理。

 

(4)Action映射器返回需要struts2处理的信息,StrutsPrepareAndExecuteFilter会创建一个Action代理

 

(5)Action代理并不知道执行哪一个Action,它会向配置管理器询问调用哪一个Action,配置管理器会从struts.xml读取我们配置的Action信息。

 

(6)Action代理创建相关请求的Action对象,调用相关的方法之前,struts2的一系列拦截器会帮我们做一些操作,例如获取请求参数等。

 

(7)然后调用execute方法根据返回的字符串去匹配相应的页面,

 

(8)页面可以获取一些页面模板,然后生成最终页面,再倒序的执行拦截器的后续操作

 

(9)最后生成HTTP响应内容

 

 

Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1 的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。不久之后,Webwork框架和Struts社区联合创造了现在流行的Struts2框架。

 

五、Struts2 框架的优点


了解了这几个主要的优点,会促使你考虑使用Struts2 :
  • POJO表单及POJO操作 - Struts2 去除掉了Struts框架中的Action Forms部分。在Struts2框架下,你可以用任何一POJO来接收表单输入,同样的,你可以把任一POJO视为一个Action类。
  • 标签支持 - Struts2 改进了标签表单,而新的标签可让开发人员减少代码编写量。
  • AJAX支持 - Struts2 被认可接收进Web 2.0技术,并创建了功能非常类似于标准的Struts2 标签的AJAX标签,把AJAX支持整合进其结果中。
  • 易于整合 - Struts有多种整合方式可使用,现在与其他类型的框架,如Spring、Tiles、SiteMesh之类的,整合更为容易了。
  • 模板支持 - 支持使用模板生成视图。
  • 插件支持 - 有大量的插件可用于Struts2,而使用插件可以增强和扩大Struts2 核心行为。
  • 性能分析 - Struts2 为调试和配置应用程序提供综合的性能分析,此外,Struts也以嵌入调试工具的形式提供集成调试。
  • 易于修改标签 - 在Struts2 中,可使用Freemarker的模板对标签标记进行调整,而修改标签不需要JSP或是Java知识,基本的HTML、XML和CSS知识就足够了。
  • 促进减少配置 - Struts2 使用各种设置的默认值促进减少配置,而你不需要再配置什么除非是偏离了Struts2 设定的默认设置。
  • 视图技术 - Struts2 为多种视图选项(JSP、Freemarker、Velocity、XSLT等)提供支持。
以上是使Struts2 成为准企业框架的十大优点。

六、Struts2 框架的缺点


尽管Struts2 有一大列的优点,但我们还是要提到关于它的一些仍需不断改进的缺点:
  • 更大的学习曲线 - 使用Struts MVC,你必须要熟悉JSP、Servlet APIs标准以及一个大型、复杂的框架。
  • 文档缺乏 - 相比于Servlet和JSP APIs标准,Struts的在线资源较少,许多初学者会发现Apache在线文档混乱并缺乏整理。
  • 不够透明 - 相比于使用正常的基于Java的Web应用程序,使用Struts的应用程序有许多是进行在后台,这使得框架不易于理解。
最后说明一点,一个好的框架应该提供各种类型的应用程序都可以使用的通用行为,Struts2 是最好的Web框架之一,并频繁用于RIA(Rich Internet Applications)的发展。
posted @ 2018-08-08 19:25  跃小云  阅读(711)  评论(0编辑  收藏  举报