struts2和springmvc区别?
一、struts2和springmvc区别
1.框架机制
Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。
Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。
2.拦截机制
Struts2框架是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype(否则会出现线程并发问题),然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。
3.性能方面
SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。而Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,所以,SpringMVC开发效率和性能高于Struts2。
4.配置方面
spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。SpringMVC可以认为已经100%零配置。
5.集成方面
SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。
延伸阅读:
二、拦截器与过滤器的区别
拦截器是基于java的反射机制的,而过滤器是基于函数回调。
拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
以上就是关于struts2和springmvc区别的内容希望对大家有帮助。
相关推荐HOT
更多>>linux的图形输入命令?
linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信息,怎么...1、是进入了linux控制台字符终端环境,要回到图形控制台,按 Ctrl + ...详情>>
2023-10-21 22:37:07linux进入命令方式?
linux的进入磁盘命令1、查看磁盘空间 -df df命令以磁盘分区为单位查看文件系统中磁盘空间的使用情况。2、Linux系统在使用光盘、软盘或U盘时,必...详情>>
2023-10-21 19:51:43linux永久挂载的命令?
Linux实现硬盘永久挂载,怎么查看有没有永久挂载?1、主要就是编辑文件 /etc/fstab,把需要永久挂载的磁盘号对应的目录写入此文件内,保存退出重...详情>>
2023-10-21 19:28:23linux定时清理命令?
Linux定时删除日志文件/文件夹使用crontab命令生成定时任务,每天shell脚本可以自动进行日志清理。为了避免手工删除日志,考虑通过写shell脚本...详情>>
2023-10-21 16:33:28