SpringMVC和Struts2的区别,为什么要用SpringMVC

注意本篇文章是基于已经学过并且理解SpringMVC和Struts2的人写的,如果没有学过阅读本篇文章很可能是不理解的。

至于共同点就不想多说了,就是都为视图层框架,

区别:

        1.SpringMVC是基于方法开发的,而Struts2是基于类开发的。

                解释:学过SpringMVC的人都知道,如果不用注解的话,其实每一个访问路径都会映射到一个handler上面,而这个handler只有一个方法。就是public ModelAndView handleRequest(HttpServletRequest request,           HttpServletResponseresponse) throws Exception。但是用了注解之后就可以在一个类中写多个方法了,可是这个从本质上来说每个方法就是一个handler类,这个方法就是其中的handleRequest,为什么呢,因为SpringMVC将URL通过处理器映射器,然后经过处理器适配器找到了这个带有注解的方法,这个时候映射成功之后就生成一个handler对象。所以这一个方法就是一个类,所以说SpringMVC是基于方法开发的。而Struts2是经过一个过滤器,找到了这个Struts.xml的配置文件,去里面加载一个action类,所以是基于类开发的。

    2.SpringMVC是可以单例开发的,但是Struts2是必须多例开发。

            解释:因为SpringMVC是基于方法开发的,原因上面那条已经写过了,所以在用注解的时候在一个类中定义的service接口不会因为是在一个类的成员变量位置而产生多线程安全问题,因为每一方法都是一个新的service对象,并且获取页面中的封装数据是在方法的参数中定义的,所以才可以放心的用单例开发,而Struts2是基于类开发的,在进行页面数据封装的时候,必须有成员变量,因为底层是基于内省机制,所以还必须提供set方法,这就会导致线程安全问题。

    3.SpringMVC速度比Struts2快。

            解释:第一点;由于SpringMVC是可以用单例开发,所以创建对象的个数就会比较少,但是Struts2是多例开发,随意对于内存的消耗是比较费时和浪费空间的。第二点:Struts2使用了自己提供的标签库,为了 取到值栈,而在页面中大量引用自己标签库的时候,也会引起速度变慢,jstl的标签速度比较快,所以在开发的时候想要Struts2快一点,应该尽量用el表达式和jstl。

   

总结:经过几番PK,大家应该明白了这两个框架的区别,也应该知道了,为什么现在企业越来越多的使用SpringMVC了吧,

    

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值