- 浏览: 1898665 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
jquery打印指定的div -
GentlemanQc:
...
quartz系列(二)spring3.2.5与quartz2.1.7集群版集成简要说明 -
静夜独窗:
你好,能说一下server.xml增加的配置是怎么影响性能的吗 ...
tomcat7.0性能优化-挑战极限精简版 -
beyondfengyu:
beyondfengyu 写道如果每个客户进程的时间不同步,时 ...
java并发(二十二)分布式锁 -
beyondfengyu:
如果每个客户进程的时间不同步,时间超前的进程是不是更容易得到锁 ...
java并发(二十二)分布式锁
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。
2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。
3. 参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。
4. 设计思想上:struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。
5. intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3 mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。
6. 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。
想让conrtoller保存数据?
恩,这个倒没用过,理论上应该可以。controller也是个特殊的bean
在web.xml中加入:
<!-- Reads request input using UTF-8 encoding -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts2确实非常好用,action的设计对于解耦非常好,不仅仅是web app,也可以轻松移植到什么形式的调用机制; 但是,“在与spring整合后,可以将action配置成单例。
” 没现场问题吗?
但是,“在与spring整合后,可以将action配置成单例。如果交给spring管理Action,应该配置prototype吧~service或dao才是singleton
是的,都是这样配的,所以我觉得他说的很奇怪啊。。。
struts2确实非常好用,action的设计对于解耦非常好,不仅仅是web app,也可以轻松移植到什么形式的调用机制; 但是,“在与spring整合后,可以将action配置成单例。
” 没现场问题吗?
但是,“在与spring整合后,可以将action配置成单例。如果交给spring管理Action,应该配置prototype吧~service或dao才是singleton
struts2确实非常好用,action的设计对于解耦非常好,不仅仅是web app,也可以轻松移植到什么形式的调用机制; 但是,“在与spring整合后,可以将action配置成单例。
” 没现场问题吗?
好几年前的 Struts 2.1 开始就支持 Servlet 入口了,我还改过原始的 Struts2 NetBeans 插件让它支持Web.xml中注册Servlet,自己上 http://hantsy.blogspot.com 看效果。 OSC 上一张图片也是我改造后的 Struts 2 插件效果,http://www.oschina.net/p/nbstruts2support。
2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。
3. 参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。
4. 设计思想上:struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。
5. intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,所以我觉得论使用上来讲,spring mvc使用更加简洁,开发效率Spring MVC确实比struts2高。spring mvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上spring3 mvc就容易实现restful url。struts2是类级别的拦截,一个类对应一个request上下文;实现restful url要费劲,因为struts2 action的一个方法可以对应一个url;而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。spring3 mvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架方法之间不共享变量,而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码,读程序时带来麻烦。
6. 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。
评论
32 楼
85977328
2014-03-14
kangzj 写道
之前一直纠结各个让spring mvc的controller方法加个从request来的数据,后来发现springmvc controller默认是单例,只能加公共方法,映射过的方法各自调用,不太优雅。后来想到用一个ThreadLocal变量来处理,好看一些了
想让conrtoller保存数据?
31 楼
85977328
2014-03-14
kangzj 写道
还有springmvc可以加@prototype注解,就变成每个请求都新建对象了。没有看过源码哈,说的不对请朴老师指正
恩,这个倒没用过,理论上应该可以。controller也是个特殊的bean
30 楼
kangzj
2014-03-14
还有springmvc可以加@prototype注解,就变成每个请求都新建对象了。没有看过源码哈,说的不对请朴老师指正
29 楼
kangzj
2014-03-14
之前一直纠结各个让spring mvc的controller方法加个从request来的数据,后来发现springmvc controller默认是单例,只能加公共方法,映射过的方法各自调用,不太优雅。后来想到用一个ThreadLocal变量来处理,好看一些了
28 楼
wenzibin2010
2014-01-21
27 楼
xianbin
2013-01-08
bantjmh 写道
请教一下,我使用@ResponseBody注解,直接返回字符串时,中文乱码怎么解决?
在web.xml中加入:
<!-- Reads request input using UTF-8 encoding -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
26 楼
bantjmh
2012-12-21
请教一下,我使用@ResponseBody注解,直接返回字符串时,中文乱码怎么解决?
25 楼
85977328
2012-09-06
本人觉得,1个框架能干的事情。没必要2个框架来做。
简单最好。
简单最好。
24 楼
Shen.Yiyang
2012-09-06
inotgaoshou 写道
Shen.Yiyang 写道
superpeter 写道
如果大家有用过struts 2.1以后的版本,应该不会觉得spring mvc有什么优势了。反而,spring mvc与servlet绑得太紧,使用起来没有struts 2方便一些。Struts 2现在也支持annotation,甚至annotation也可以不用,完全零配置。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
struts2确实非常好用,action的设计对于解耦非常好,不仅仅是web app,也可以轻松移植到什么形式的调用机制; 但是,“在与spring整合后,可以将action配置成单例。
” 没现场问题吗?
但是,“在与spring整合后,可以将action配置成单例。如果交给spring管理Action,应该配置prototype吧~service或dao才是singleton
是的,都是这样配的,所以我觉得他说的很奇怪啊。。。
23 楼
inotgaoshou
2012-09-06
Shen.Yiyang 写道
superpeter 写道
如果大家有用过struts 2.1以后的版本,应该不会觉得spring mvc有什么优势了。反而,spring mvc与servlet绑得太紧,使用起来没有struts 2方便一些。Struts 2现在也支持annotation,甚至annotation也可以不用,完全零配置。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
struts2确实非常好用,action的设计对于解耦非常好,不仅仅是web app,也可以轻松移植到什么形式的调用机制; 但是,“在与spring整合后,可以将action配置成单例。
” 没现场问题吗?
但是,“在与spring整合后,可以将action配置成单例。如果交给spring管理Action,应该配置prototype吧~service或dao才是singleton
22 楼
Shen.Yiyang
2012-09-06
superpeter 写道
如果大家有用过struts 2.1以后的版本,应该不会觉得spring mvc有什么优势了。反而,spring mvc与servlet绑得太紧,使用起来没有struts 2方便一些。Struts 2现在也支持annotation,甚至annotation也可以不用,完全零配置。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
struts2确实非常好用,action的设计对于解耦非常好,不仅仅是web app,也可以轻松移植到什么形式的调用机制; 但是,“在与spring整合后,可以将action配置成单例。
” 没现场问题吗?
21 楼
jianwwpro
2012-09-06
@ResponseBody 是属于消息处理机制了,可根据返回类型自适应是json还是xml还是byte[]或excel,只需responsebody,自动就给处理了。事先配置一下消息处理器。
20 楼
jiuyuehe
2012-09-06
spring mvc 以前听的不多,最近在网站上看到好多关于spring mvc的介绍
这方面就是因为他们的设计不同了,spring mvc他的每一个方法都是独立的,从一个action 跳到另一个action 是不能像struts那么简单的,但是也可以很好的从一个url跳另一个url
a283037321 写道
我是小白,我感觉struts2的跳转方便一些,spring跳转到另一个action貌似很恶心一样,当然,我不熟练这俩东西,嘿嘿
这方面就是因为他们的设计不同了,spring mvc他的每一个方法都是独立的,从一个action 跳到另一个action 是不能像struts那么简单的,但是也可以很好的从一个url跳另一个url
19 楼
wazhouqian
2012-09-06
各有各的优势,个人觉得struts2的设计更容易理解一些
18 楼
superpeter
2012-09-06
补充一点:现在struts2也支持restful。
17 楼
superpeter
2012-09-06
如果大家有用过struts 2.1以后的版本,应该不会觉得spring mvc有什么优势了。反而,spring mvc与servlet绑得太紧,使用起来没有struts 2方便一些。Struts 2现在也支持annotation,甚至annotation也可以不用,完全零配置。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
对ajax的支持,struts2提供了一个json结果类型,处理起来相当方便,基本不用接触底层的JSON API。
struts2一个action也可以直接配置成多个逻辑action,在与spring整合后,可以将action配置成单例。
总体上说,struts2还是比spring更好用一些的。
16 楼
hantsy
2012-09-06
引用
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。
好几年前的 Struts 2.1 开始就支持 Servlet 入口了,我还改过原始的 Struts2 NetBeans 插件让它支持Web.xml中注册Servlet,自己上 http://hantsy.blogspot.com 看效果。 OSC 上一张图片也是我改造后的 Struts 2 插件效果,http://www.oschina.net/p/nbstruts2support。
15 楼
gaobo8993
2012-09-06
还不错 受教了
14 楼
shoru
2012-09-06
我觉得抨击spring变态的,可能是对servlet的理解还不深。
13 楼
85977328
2012-09-06
spring的社区和用户量更大一些,我的工作经验当中,都开始使用spring mvc了。只有遗留系统在用struts2
发表评论
-
spring bean的四种常用作用域
2014-03-26 17:28 2556Spring的 bean有5种作用域分别是:singleton ... -
spring的cache接口
2014-01-08 18:05 0http://jinnianshilongnian.iteye ... -
quartz系列(三)terracotta2.3.5详细安装教程
2013-12-23 10:00 5836【概述】 官方网站 http://terracotta.org ... -
quartz系列(二)spring3.2.5与quartz2.1.7集群版集成简要说明
2013-12-23 09:54 6327一 概述 集成细节 ... -
spring3.2.2与xmemcached-1.3.7的优雅集成
2013-04-27 21:41 3402之前一直在网上找spring集成memcached的代码,但是 ... -
关于spring的bean配置继承
2013-03-27 12:55 3247bean配置继承? 顾名思 ... -
spring mvc-3.1.1与logback-1.0.3,slf4j-1.6.4集成
2012-05-17 20:47 12893之前用过spring配置log4j的。但是由于log4 ... -
spring mvc参数自定义注解开发
2012-04-19 10:15 11338前言 在使用过程中,发现spring mvc的rest ... -
spring mvc跳转
2011-12-21 09:18 5464在spring mvc的controller中,从一个cont ... -
spring3.0.5的TaskExecutor(线程池)集成使用
2011-02-22 19:54 3779一 前言 最近的项目,要用到线程池,之前的项目都是直接 ... -
spring3.0.5的rmi集成使用
2011-02-16 16:47 2011一 前言 工作环境中,大部分功能,都是基于服务(SOA ... -
quartz系列(一)spring3.2.5与quartz1.8.6单机版集成详细说明
2011-02-14 22:56 8967一 前言 公司业务需要,开发超时提醒的功能.因此笔者将 ... -
spring3.0.5的mvc使用(exception,json,annotation,xml,upload/download)
2011-01-31 10:36 5976由于公司的项目要使用spring的mvc,所以特意写了 ... -
spring3.0.5与zk5.0.5的集成详细说明
2011-01-21 18:15 1779一 前言 spring3.0.5和zk5.0.5的集成 ... -
spring 3.0各包说明
2011-01-20 21:51 1990org.springframework.aop- 3.0.0. ... -
spring3.0.5与JPA2.0(hibernate3.6)的集成详细说明
2011-01-17 15:37 7875一 前言 最近在做个项目,JPA使用了hibe ... -
spring3.0.5的事务传播
2011-01-14 11:13 1873事务传播行为类型 REQUIRED 如果当前没有事务,就新 ... -
spring3.0.5与hibernate3.6的集成初步
2011-01-14 11:11 3149spring3.0.5对jpa2.0开 ... -
spring3.0.5的aop使用
2011-01-14 11:03 3917spring3.0.5开始支持jpa2.0了,但是最近 ... -
spring使用jndi数据源
2010-10-26 08:56 3263其实spring使用jnid数据源很简单,本人只是在这记录一下 ...
相关推荐
spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 ...
Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...
spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包
Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦业务逻辑和展示层,提高代码的可维护性和可测试性。然而,两者在设计理念、功能特性以及实现方式上存在显著差异。...
接下来,Struts是另一款流行的MVC框架,虽然在Spring MVC广泛应用的现在,Struts的使用可能较少,但在本系统中,Struts可能被用来增强特定的控制器功能,或者作为Spring MVC的补充,提供额外的Action类和拦截器,以...
标题中的"spring-webmvc-struts.jar"和"aspectjweaver.jar"是两个重要的Java库文件,它们在Java Web开发中扮演着核心角色,特别是对于基于Spring框架的应用程序。现在让我们详细了解一下这两个库以及它们在实际开发...
标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...
在IT行业中,MVC(Model-View-Controller)和Struts2是两种广泛使用的Web应用程序开发框架,尤其在Java平台上。ACCP(Advanced Certified Computer Professional)5.0 Y2是某培训机构的一个课程版本,该课程可能涵盖...
Spring MVC 和 Struts2.x 是两个广泛使用的Java Web开发框架,它们都在模型-视图-控制器(MVC)架构中提供了强大的支持。Spring MVC 以其灵活性、高效性和可扩展性在近年来逐渐受到开发者青睐,尤其是在Spring 3.0...
spring-webmvc-struts-2.5.6-sources
Spring MVC和Struts2.x的主要区别在于: - **控制反转(IoC)**:Spring MVC内置于Spring框架,可以充分利用Spring的IoC容器管理依赖,而Struts2需要集成Spring才能实现类似功能。 - **注解支持**:两者都支持注解,...
相较于Struts2,Spring MVC避免了一些可能导致性能下降的特性,如值栈、OGNL表达式等。 二、Spring MVC核心类与接口:Spring MVC架构中包含许多核心组件,如DispatcherServlet、HandlerMapping、Controller、...
2. **性能**:Spring MVC 在性能方面优于 Struts,这得益于其更轻量级的设计和更好的优化。 3. **易用性**:两者都有各自的优点。Struts 由于历史悠久,文档和教程丰富,对于初学者来说上手更容易;而 Spring MVC ...
Spring3、Struts2和Ibatis的整合,构建了一个完整的MVC+持久层架构。Spring作为整个应用的调度中心,管理所有对象的生命周期,包括Struts2的Action和Ibatis的SqlSession。Struts2负责接收HTTP请求,调用Action执行...