struts2概述

struts2是一个基于MVC设计模式的web应用框架,它本质上是一个servlet,在MVC设计模式中,struts2作为控制器来建立模型与视图的数据交互。

Struts目前已经分化成两个截然不同的版本:

1、基于传统Struts的Struts1,由于Struts1与JSP/Servlet耦合非常紧密,因而导致了许多不可避免的缺陷。

Struts1缺陷:

a、支持的表现层技术单一。只支持JSP作为表现层技术,不提供与其他表现层技术
b、与Servlet API严重耦合。在Struts1的业务逻辑控制器内充满了大量的Servlet API,从而导致Struts1的Action难于测试。
c、代码依赖于Struts1 API。Struts1的Action类必须继承Struts1的Action基类,实现处理方法时,又包含了大量Struts1 API,如ActionMapping、ActionForm和ActionForward类。
2、基于WebWork的Struts2
Struts2是由WebWork升级而来的,WebWork已经不存在了,彻底变成了Struts2.WebWork的设计本身就比Struts1更加优秀:它采用了一种更加松耦合的设计,让系统的Action不再与Servlet API耦合,使单元测试更加方便,允许系统从B/S结构向C/S结构转换。

struts2优势:

a、Action无须与Servlet API耦合,更易测试。Struts2的Action更像一个普通的Java对象,该控制器代码中没有耦合任何Servlet API。
b、Action无须与WebWork耦合,代码重用率高。Struts2中的Action其实就是一个POJO(普通、传统的Java对象),该Action仅仅实现了Action接口,包含了一个execute方法。该方法没有出现任何Servlet API,也没有出现任何Struts2 API,这个方法在任何环境下都有重用的价值。
c、更好的模块化支持。无论是Action管理、Action的输入校验,还是国际化资源文件的管理,Struts2都提供了更好的模块化支持,适合大项目的团队协作开发。
d、更好的可扩展性。Struts2框架的核心由大量拦截器实现,这些拦截器都是可“插拔式”的,因此开发者可以随时替换、升级其中的一个或多个拦截器,这样既可扩展Struts框架本身的功能。

struts工作原理:

通过浏览器发送http请求,读取web.xml被filterDispater接收,根据struts.xml找到调用的action类或方法,action通过业务逻辑组件处理业务逻辑,action执行完毕根据struts.xml的配置找到返回的结果,并跳转到该页面。

Struts2的配置文件

当Struts2创建系统的Action代理时,需要使用Struts2的配置文件。Struts2的配置文件有两份:
1、配置Action的struts.xml文件
struts.xml文件内定义了Struts2的系列Action,定义Action时,指定该Action的实现类,并定义该Action处理结果与视图资源之间的映射关系。
2、配置Struts2全局属性的struts.properties文件
struts.properties文件的形式是系列的key、value对,它指定了Struts2应用的全局属性。

Struts2的标签库

Struts2的标签库也是Struts2的重要组成部分,Struts2的标签库提供了非常丰富的功能,这些标签库不仅提供了表现层数据处理,而且提供了基本的流程控制功能,还提供了国际化,Ajax支持等功能。Struts2的标签库默认提供了页面布局功能,还提供了输出错误提示功能。Struts2的标签库的功能非常强大,该标签可以完全替代JSTL的标签库。而且Struts2的标签支持OGNL(Object Graph Notation Language)表达式语言,功能非常强大。

Struts2的控制器组件

Struts2的控制器组件是Struts2框架的核心,事实上,所有的MVC框架都是以控制器组件为核心的。Struts2的控制器由两部分组成:StrutsPrepareAndExecuteFilter和业务控制器Action。
Struts2应用中起作用的业务控制器不是用户定义的Action,而是系统生成的Action代理,但该Action代理是以用户定义的Action为目标的。
该Action类以下优势:
1、Action类完全是一个POJO,因此具有很好的代码复用性。
2、Action类无须与Servlet API耦合,因此进行单元测试非常简单。
3、Action类的execute方法仅返回一个字符串作为处理结果,该处理结果可以映射到任何的视图,甚至是另一个Action。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值