Struts2与SpringMVC的区别

1.Struts2是类级别上的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文。而且Struts过滤后是去Struts配置文件中找Action,而SpringMVC过滤后是去controller中找对应于@RequestMapping注解的url绑定的方法,

从这里看Struts用起来更麻烦,因为你要每个类的请求你都要配置对应的拦截器 如:

1 <struts>
2    <package name="loginpackage"  namespace="/sys"  extends="struts-default" >
3    <action name="login_*"   class="com.tax.action.LoginAction"  method="{1}"  >
4    <result name="mainUI" >/mainUI.jsp</result>
5    <result name="loginUI" >/loginUI.jsp</result>
6    </action>
7    </package>
8 </struts>

而SpringMVC的话:

1     @RequestMapping("api/fleet/delete")
2     @ResponseBody
3     public ReturnResult delete(FleetParam param, String userId) {
4         return fleetService.delete(param, userId);
5     }

2.也因为拦截器原因,导致Struts2的action比较乱,因为它要定义属性来获取请求中参数的数据,而属性在一个类的方法间是共享的(方法间不能独享request、response数据),所以会有点乱。而SpringMVC中请求参数与controller中方法的形参自动配对(在名字相同,或请求参数与形参的属性名相同,或通过@RequestParam注解指定条件下会自动将请求参数的值赋给形参)方法间可以独享request、response数据。

从这点来看,你会发现Struts2的Action看上去有点乱,而SpringMVC的Controller会更简单明了。

3.SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。

4.SpringMVC有IOC、Di、AOP和注解完善的体系。

比如说IOC ,它在一定程度上降低了不同层间的耦合性,这也得益于Java的反射机制,使SpringMVC容器可以动态的生成对象。

比如说AOP,它可以对分散的对象、方法进行共同处理(增删改时的事务)。

时间: 2024-10-07 05:31:22

Struts2与SpringMVC的区别的相关文章

Struts2和SpringMvc的区别

本质区别: 1.  springMVC基于方法的开发,我们可以通过我们的代码中,我们没有所谓的数据域对象,除了引用的service就只有方法,而Struts2是基于类的开发,该类中有各种各样的全局变量,因此我们说Struts2基于类的开发. 2.  springMVC可以单例开发,并且建议单例开发,因为springMVC通过controller的形参接收数据,方法结束后形参数据销毁:而Struts2则是通过模型驱动或者属性驱动获取数据,而且这些变量都是全局变量,因此Struts2是多例开发. 3

浅谈Servlet和Filter的区别以及两者在Struts2和Springmvc中的应用

在javaweb开发中,Servlet和Filter是很重要的两个概念,我们平时进行javaweb开发的时候,会经常和Servlet和Filter打交道,但我们真的了解Servlet和Filter吗? 一.基本概念 Servlet: Servlet 是在WEB服务器上运行的程序.这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务. 服务器上需要一些程序,

struts1,struts2,springMVC终极对比

最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比. Struts1官方已经停止更新,现在用的也比较少,这里主要讲一下struts2和struts1比较都有哪些不同和进步.Struts2可以说不是完全从struts1改进来的,因为struts2原本就是举世闻名的Webwork2,在经历几年的发展之后,struts和WebWork社区决定合二为一,也就是今天的struts

同是流行MVC框架,比较Strtus2和SpringMVC的区别

Struts2和SpringMVC是比较流行的MVC框架,二者的工作流程大体相似,从下面两张图就可以看出. SpringMVC工作流程图 图二 SpringMVC的工作流程描述 1. 用户向服务器发送请求,请求被Spring前端控制Servelt DispatcherServlet捕获: 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI).然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及

Struts1、Struts2和SpringMVC剖析

前段框架用了不少,今天就来做个总结.网上关于Struts1.Struts2.SpringMVC的文章有很多,这里的内容就是基于它们,来做个比较. 这三个框架是按照上面的顺序,依次出现的,它们都是对MVC模式的实现.为什么会出现这三个.甚至更多的MVC框架呢?他们都是为了将URL世界映射到Java世界.尽管它们它们内部的实现思路不同,有着各自的优缺点,但是它们都做到了个自己的使用目的. 历史介绍 大多Web应用程序,都是运行在HTTP上的.HTTP协议是一系列无状态的文本传输协议.无状态的协议不记

Struts1、Struts2和SpringMVC剖析【转载】

前段框架用了不少,今天就来做个总结.网上关于Struts1.Struts2.SpringMVC的文章有很多,这里的内容就是基于它们,来做个比较. 这三个框架是按照上面的顺序,依次出现的,它们都是对MVC模式的实现.为什么会出现这三个.甚至更多的MVC框架呢?他们都是为了将URL世界映射到Java世界.尽管它们它们内部的实现思路不同,有着各自的优缺点,但是它们都做到了个自己的使用目的. 历史介绍 大多Web应用程序,都是运行在HTTP上的.HTTP协议是一系列无状态的文本传输协议.无状态的协议不记

Struts2、SpringMVC、Servlet(Jsp)性能对比 测试

Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照它. 做为一个程序员,对于各个框架的性能要有一个基本的认知,便于选型时做出正确的决策. 在测试中发现了什么也不要大喊大叫,因为这些都是Java程序员的基础知识. 人人都要了解. ----------------------------------------------------------------------------------

为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架 由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做java的web开发,会选择struts2或 者springMVC这样的框架,而不是使用servlet加jsp这样的技术呢?特别是现在我们web的前端页面都是使用velocity这样的模板语 言进行开发,抛弃了jsp,这样的选择又会给我们java的web开发带

n文件的上传和下载,struts2和springmvc

首先,struts2的上传下载的配置 因为struts2是配置的上传的拦截器,很简单的步揍就可以上传, 首先是配置struts的action映射 <!-- 4. 修改上传文件的最大大小为30M --> <constant name="struts.multipart.maxSize" value="31457280"/> <!-- 注意: action 的名称不能用关键字"fileUpload" --> <