天天看点

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

springmvc和struts2的区别 

1、springmvc基于方法开发的,struts2基于类开发的。

springmvc将url和controller方法映射。映射成功后springmvc生成一个handler对象,对象中只包括了一个method。方法执行结束,形参数据销毁。

struts2的action类中的所有方法用的都是action类中的成员变量,一旦方法变得很多的时候,我们就会不知道action类中那么多成员变量是给那个方法去使用的。十分混乱。

但是springmvc的所有参数都是定义为方法的形参,这样使用什么方法就将参数注入至对应方法的形参,所以springmvc的controller开发类似service开发。

2、springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。

3、经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。

最后我们无法实际定义springmvc与struts到底谁好谁坏,只能说struts早期由于用的比较多,它的漏洞就比较多。建议如果使用struts,就使用最新的包,因为以前的可能会有漏洞。但springmv目前几乎没有漏洞,这就是springmvc最近几年开始流行起来的原因,再有一个springmvc是基于方法开发的,更接近于service开发。

springmvc总结

springmvc框架:

dispatcherservlet前端控制器:接收request,进行response

handlermapping处理器映射器:根据url查找handler。(可以通过xml配置方式,注解方式)

handleradapter处理器适配器:根据特定规则去执行handler,编写handler时需要按照handleradapter的要求去编写。

handler处理器(后端控制器):需要程序员去编写,常用注解开发方式。

handler处理器执行后结果 是modelandview,具体开发时handler返回方法值类型包括 :modelandview、string(逻辑视图名)、void(通过在handler形参中添加request和response,类似原始 servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出)

view resolver视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用view对象表示)

view视图:jsp页面,仅是数据展示,没有业务逻辑。

注解开发:

使用注解方式的处理器映射器和适配器:

在实际开发,使用<mvc:annotation-driven>代替上边处理器映射器和适配器配置。

@controller注解必须要加,作用标识类是一个handler处理器。

@requestmapping注解必须要加,作用:

1、对url和handler的方法进行映射。

2、可以窄化请求映射,设置handler的根路径,url就是根路径+子路径请求方式

3、可以限制http请求的方法

映射成功后,springmvc框架生成一个handler对象,对象中只包括 一个映射成功的method。

注解开发中参数绑定:

将request请求过来的key/value的数据(理解一个串),通过转换(参数绑定的一部分),将key/value串转成形参,将转换后的结果传给形参(整个参数绑定过程)。

springmvc所支持参数绑定:

1、默认支持很多类型,httpservletrequest、response、session、

model/modelmap(将模型数据填充到request域)

2、支持简单数据类型,整型、字符串、日期。。

只要保证request请求的参数名和形参名称一致,自动绑定成功

如果request请求的参数名和形参名称不一致,可以使用@requestparam(指定request请求的参数名),@requestparam加在形参的前边。

3、支持pojo类型

只要保证request请求的参数名称和pojo中的属性名一致,自动将request请求的参数设置到pojo的属性中。

注意:形参中即有pojo类型又有简单类型,参数绑定互不影响。

自定义参数绑定:

日期类型绑定自定义:

定义的converter<源类型,目标类型>接口实现类,比如:

converter<string,date>表示:将请求的日期数据串转成java中的日期类型。

注意:要转换的目标类型一定和接收的pojo中的属性类型一致。

将定义的converter实现类注入到处理器适配器中。

springmvc和struts2区别:

springmvc面向方法开发的(更接近service接口的开发方式),struts2面向类开发。

springmvc可以单例开发,struts2只能是多例开发。

转载请注明出处:http://blog.csdn.net/acmman/article/details/47183585