springmvc和struts2的区别
谈谈springmvc和struts2的区别
相同点:二者都是基于mvc的web层的框架,都是负责接收用户浏览器提交的请求参数,通过某些校验操作调用业务层,而后获取到业务层返回的数据,将数据通过某种方式在前台展示。
不同点:
(1)springmvc是基于方法开发的,struts2是基于类开发的。
(2)因为二者基于的出发点不同,所以在接收请求参数时区别比较大。
springmvc是通过参数绑定接收浏览器请求参数(方法上各种形参(request、response、session、Model、ModelMap、简单类型、简单pojo、包装类pojo)浏览器的请求参数),方法执行结束,形参数据就会销毁。
struts2是通过类中的成员变量接收浏览器请求参数的。
(3)由于接收请求参数方式的不同
springmvc:因为方法之间是线程隔离的,所以springmvc支持单例和多例的开发方式。
struts2:成员变量在开发中多线程会存在线程安全问题,所以struts2只能支持多例的开发方式。
(4)springmvc是通过存储数据ModelAndView,在前台页面通过jstl(默认)展示数据的
struts2是通过值栈存储数据,在页面通过OGNL展示数据的
还有一点扩展的,想起来就大概说说
springmvc通过映射器根据url找到对应Handler,该Handler中只包含了一个method方法,这种开发的方式更接近与 服务 的开发,目前来看基本没有扫除什么漏洞。
struts2不是因为是多例开发比较慢,网上有说经过大量测试是使用了struts2的标签所以导致慢,所以建议使用jstl标签。而且建议使用较新的包,因为stuts2毕竟出来的早,漏洞能稍微多一点,不过使用较新的包也基本没有什么问题。
以上是博主学习中总结的,如有错误,请在下方评论给出建议,共同进步,谢谢。