开发时,要选择Spring mvc ,还是选择Struts2
来源:互联网 发布:淘宝网上禁止出售 编辑:程序博客网 时间:2024/06/15 08:52
开发时,要选择Spring mvc ,还是选择Struts2
spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。
spring mvc是基于方法的设计,sturts2是基于类设计的。
springmvc将url和controller方法映射。映射成功后springmvc生成一个Handler对象,对象中只包括了一个method。方法执行结束,形参数据销毁。springmvc的controller开发类似service开发。strts2每次请求都会实例一个action,每个action都会被注入属性。spring mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。
struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。
由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。
由于以上原因,springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。
struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。
Spring MVC和Spring是无缝的。
从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。SpringMVC可以认为已经100%零配置。如果是用Spring作为全局控制的话,建议使用它自己的spring mvc吧,无缝整合。
struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。
这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。
spring会稍微比struts快。经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。
struts2由于使用时间长,早期版本中的漏洞较多,使用的话建议下载最新版的jar包。而springmvc很少有漏洞,这也是springmvc现在比较流行的一个原因吧。
最后需要说明的是,springmvc和struts2都是很好的java框架,没有谁好谁坏。你可以根据项目需求具体选择。
- 开发时,要选择Spring mvc ,还是选择Struts2
- 选择Android还是IOS开发?
- 使用qt开发应用程序时,选择vs还是qtcreator?选择string还是qstring?
- 选择还是
- 项目开发时的编码选择,utf-8还是gb2312
- struts2+spring+hibernate 整合时JAR包的选择
- struts2+spring+hibernate 整合时JAR包的选择
- Web图形开发,选择SVG还是VML
- ERP,自主开发还是选择套装软件
- AutoCAD开发选择----ObjectARX还是…
- 开发该选择Blocks还是Delegates
- 开发该选择Blocks还是Delegates
- 开发该选择Blocks还是Delegates
- 开发该选择Blocks还是Delegates
- 开发该选择Blocks还是Delegates
- 为什么选择Spring MVC及demo
- spring mvc 学习(一,为什么选择spring mvc)
- 新项目选择asp.net webform还是asp.net mvc?
- 欢迎使用CSDN-markdown编辑器
- 1364
- Android通知
- 1365
- TX-1C实验板各元件知识
- 开发时,要选择Spring mvc ,还是选择Struts2
- Codeforces 744C【DFS】
- 设计模式—三个工厂
- 1366
- I/O 流
- 关于Java线程转储分析
- 1367
- Python中多进程在爬虫中的使用
- 从使用到原理学习Java线程池