- 浏览: 1277015 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
最后的攻城狮:
这也太乱了
mybatis与spring事物处理日志 -
leo_soul:
现在不能跨1级域名了吧?比如www.aaa.com,www.b ...
Cookie跨域操作 -
zy976133:
怎么解决的
jaxws不支持SOAPBinding.Use.ENCODED -
cuiyaoqiang:
你好 开发一个http接口给fs调用 ,这个http接口是自己 ...
freeswitch 动态加载号码 -
Jackromer:
请问楼主知道如何通过主控方来删除与其有关的中间表记录? 谢谢, ...
hibernate 多对多只删除中间表数据
项目刚刚换了web层框架,放弃了struts2改用spring3mvc
当初还框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢
不用不知道 一用就发现开发效率确实比struts2高
我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置
spring3 mvc可以认为已经100%零配置了(除了配置springmvc-servlet.xml外)
比较了一下strus2与spring3 mvc的差别
============================================
struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文
spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文
好了 我们来整理一下
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
===================================
spring3mvc的方法之间基本上独立的,独享request response数据
请求数据通过参数获取,处理结果通过ModelMap交回给框架
方法之间不共享变量
而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的
这不会影响程序运行,却给我们编码 读程序时带来麻烦
====================================
spring3 mvc的验证也是一个亮点,支持JSR303
处理ajax的请求更是方便 只需一个注解@ResponseBody ,然后直接返回响应文本即可
附上一段代码
这个确实是,而且seam在某些应用里面有很大的优势,比如一些传统的管理系统项目,我最不爽的的是JSF,做B/S出生的人估计没几个喜欢那套呆板难用的jsf组件。
能说的再详细点吗?
我是觉得,像struts2系,spring3 mvc系等等整个围绕的是页面请求,参数,围绕这些东西思考的就是过程式。jsf,seam围绕的是事件,对象状态,对象交互,对象生命周期,jsf,seam中,页面也是通过一些标签包装后的,可供其他任意bean访问的对象,这些东西才是java做为一门静态强类型的,面向对象的语言应用的地方。
想让程序员不去关注HTTP协议的框架才是歪门邪道!
所谓过程式,对象式本身无优劣之分,如果有人觉得面对对象一定比面向过程,只能说明此人被洗脑了。
这些都是方法论的东西,分别用在各种合适的地方。对于jsf对http协议和html的包装,从java语言角度来看,也许是成功的,但是我们从实际使用和效果来看,我认识为是失败的,特别是在互联网上。
能说的再详细点吗?
我是觉得,像struts2系,spring3 mvc系等等整个围绕的是页面请求,参数,围绕这些东西思考的就是过程式。jsf,seam围绕的是事件,对象状态,对象交互,对象生命周期,jsf,seam中,页面也是通过一些标签包装后的,可供其他任意bean访问的对象,这些东西才是java做为一门静态强类型的,面向对象的语言应用的地方。
想让程序员不去关注HTTP协议的框架才是歪门邪道!
表示层的框架选择是毫无悬念的。在浏览器模式下,MVC将远超事件驱动。
Seam秉承的始终是事件驱动,这从设计理念上就已经败了。
真TM喜欢这种说法。优雅必须基于实践基础上,像JSF一样把视图的很多逻辑放在服务器端更本是错误的方向。
表示层的框架选择是毫无悬念的。在浏览器模式下,MVC将远超事件驱动。
Seam秉承的始终是事件驱动,这从设计理念上就已经败了。
楼主所指的是配置文件de零配置
不懂不要乱说,struts 2 的零配置实现不要太多。约定插件、通配符都可以
to Agrael
在我做的测试里对struts2使用的是*.action, *.jsp, 没有用到你所说的/*
内存泄漏这个你只要写个jsp. 如http://localhost/myapp/my.jsp?para1=1¶2=2¶3=3. 在my.jsp里可以什么逻辑都不要, 只要输出这三个参数值就行. 然后使用road runner 在500用户下狂压20分钟看看。
当然我用的是struts2.1.6来做试验的.
在高版本下有没有解决这个问题就不知道了
这位老兄能不能就测试过程及结果截一些图分享一下?
性能问题很尖锐,大家都比较关心。
当初还框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢
不用不知道 一用就发现开发效率确实比struts2高
我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置
spring3 mvc可以认为已经100%零配置了(除了配置springmvc-servlet.xml外)
比较了一下strus2与spring3 mvc的差别
============================================
struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文
spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文
好了 我们来整理一下
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
===================================
spring3mvc的方法之间基本上独立的,独享request response数据
请求数据通过参数获取,处理结果通过ModelMap交回给框架
方法之间不共享变量
而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的
这不会影响程序运行,却给我们编码 读程序时带来麻烦
====================================
spring3 mvc的验证也是一个亮点,支持JSR303
处理ajax的请求更是方便 只需一个注解@ResponseBody ,然后直接返回响应文本即可
附上一段代码
@RequestMapping(value="/whitelists") public String index(ModelMap map){ Account account = accountManager.getByDigitId(SecurityContextHolder.get().getDigitId()) ; List<Group> groupList = groupManager.findAllGroup(account.getId()) ; map.put("account", account); map.put("groupList", groupList); return "/group/group-index" ; } //@ResponseBody ajax响应 @RequestMapping(value="/whitelist/{whiteListId}/del") @ResponseBody public String delete(@PathVariable Integer whiteListId){ whiteListManager.deleteWhiteList(whiteListId) ; return "success" ; }
评论
66 楼
slaser
2010-04-20
zdmcjm 写道
我只是说seam,能发挥java的威力,而不是说什么什么不好。
并且我曾用grails做过几个项目,其底层也是springmvc spring 之类的,饱受无状态与自己管理状态之苦。特别是用户,需要切换身份,切换权限,切换工作区之类。。
并且我曾用grails做过几个项目,其底层也是springmvc spring 之类的,饱受无状态与自己管理状态之苦。特别是用户,需要切换身份,切换权限,切换工作区之类。。
这个确实是,而且seam在某些应用里面有很大的优势,比如一些传统的管理系统项目,我最不爽的的是JSF,做B/S出生的人估计没几个喜欢那套呆板难用的jsf组件。
65 楼
zdmcjm
2010-04-20
我只是说seam,能发挥java的威力,而不是说什么什么不好。
并且我曾用grails做过几个项目,其底层也是springmvc spring 之类的,饱受无状态与自己管理状态之苦。特别是用户,需要切换身份,切换权限,切换工作区之类。。
并且我曾用grails做过几个项目,其底层也是springmvc spring 之类的,饱受无状态与自己管理状态之苦。特别是用户,需要切换身份,切换权限,切换工作区之类。。
64 楼
slaser
2010-04-20
murainwood 写道
zdmcjm 写道
moses3017 写道
zdmcjm 写道
像struts2和spring3 mvc这样的框架如果流行起来,那才真是java莫落的前兆。
而jsf,seam这样的真正把java威力发挥的框架不流行,是一种悲哀。
而jsf,seam这样的真正把java威力发挥的框架不流行,是一种悲哀。
能说的再详细点吗?
我是觉得,像struts2系,spring3 mvc系等等整个围绕的是页面请求,参数,围绕这些东西思考的就是过程式。jsf,seam围绕的是事件,对象状态,对象交互,对象生命周期,jsf,seam中,页面也是通过一些标签包装后的,可供其他任意bean访问的对象,这些东西才是java做为一门静态强类型的,面向对象的语言应用的地方。
想让程序员不去关注HTTP协议的框架才是歪门邪道!
所谓过程式,对象式本身无优劣之分,如果有人觉得面对对象一定比面向过程,只能说明此人被洗脑了。
这些都是方法论的东西,分别用在各种合适的地方。对于jsf对http协议和html的包装,从java语言角度来看,也许是成功的,但是我们从实际使用和效果来看,我认识为是失败的,特别是在互联网上。
63 楼
murainwood
2010-04-20
zdmcjm 写道
moses3017 写道
zdmcjm 写道
像struts2和spring3 mvc这样的框架如果流行起来,那才真是java莫落的前兆。
而jsf,seam这样的真正把java威力发挥的框架不流行,是一种悲哀。
而jsf,seam这样的真正把java威力发挥的框架不流行,是一种悲哀。
能说的再详细点吗?
我是觉得,像struts2系,spring3 mvc系等等整个围绕的是页面请求,参数,围绕这些东西思考的就是过程式。jsf,seam围绕的是事件,对象状态,对象交互,对象生命周期,jsf,seam中,页面也是通过一些标签包装后的,可供其他任意bean访问的对象,这些东西才是java做为一门静态强类型的,面向对象的语言应用的地方。
想让程序员不去关注HTTP协议的框架才是歪门邪道!
62 楼
slaser
2010-04-20
downpour 写道
zdmcjm 写道
to downpour:
seam3一出,自见分晓.也许你会改变看法.
seam3一出,自见分晓.也许你会改变看法.
表示层的框架选择是毫无悬念的。在浏览器模式下,MVC将远超事件驱动。
Seam秉承的始终是事件驱动,这从设计理念上就已经败了。
真TM喜欢这种说法。优雅必须基于实践基础上,像JSF一样把视图的很多逻辑放在服务器端更本是错误的方向。
61 楼
vtrtbb
2010-04-20
seam这些东西早就有了,包扩jsf2.0中,实现起来比这个还要优雅许多
但是基于事件的,对于做互联网的项目有时候一些效果实现起来比较困难,比较搓火
但是基于事件的,对于做互联网的项目有时候一些效果实现起来比较困难,比较搓火
60 楼
xly_971223
2010-04-20
seam应用在后台管理项目中也许有一丝的优势
但是在互联网项目中毫无胜算
但是在互联网项目中毫无胜算
59 楼
downpour
2010-04-20
zdmcjm 写道
to downpour:
seam3一出,自见分晓.也许你会改变看法.
seam3一出,自见分晓.也许你会改变看法.
表示层的框架选择是毫无悬念的。在浏览器模式下,MVC将远超事件驱动。
Seam秉承的始终是事件驱动,这从设计理念上就已经败了。
58 楼
zdmcjm
2010-04-20
to downpour:
seam3一出,自见分晓.也许你会改变看法.
seam3一出,自见分晓.也许你会改变看法.
57 楼
hrsvici412
2010-04-19
哈哈,学学spring的洞东西
56 楼
tamsiuloong
2010-04-19
spyker 写道
哦 基于注解的
注解算不算配置?
注解算不算配置?
楼主所指的是配置文件de零配置
55 楼
曾经de迷茫
2010-04-19
cai824 写道
struts 2 在视图层方面我感觉还是很好的,楼主说在action中的类属性共享问题,就我个人感觉来说比spring要方便很多,要将强程序的可读性只需要添加注释就好了;不想spring参数都需要重复的在每个方法中重新定义。sping的零配置感觉比struts要好,不像struts每个url都需要去配置对应的action方法
不懂不要乱说,struts 2 的零配置实现不要太多。约定插件、通配符都可以
54 楼
peak
2010-04-19
说句实话,楼主这么用spring3确实是到了方法级别,不过我觉得还是定义到类级别,然后用method来区分方法比较好,配置更少,写起来更简单
53 楼
NumbCoder
2010-04-19
个人感觉spring MVC用起来比较轻。
52 楼
cai824
2010-04-19
struts 2 在视图层方面我感觉还是很好的,楼主说在action中的类属性共享问题,就我个人感觉来说比spring要方便很多,要将强程序的可读性只需要添加注释就好了;不想spring参数都需要重复的在每个方法中重新定义。sping的零配置感觉比struts要好,不像struts每个url都需要去配置对应的action方法
51 楼
rendong
2010-04-19
spring mvc 有一个问题 struts2中设置了
auto_import=/WEB-INF/macros/admin/lib.ftl as csm 可以找到 lib.ftl
以后,auto_import的文件必须在/WEB-INF/view/admin/的子目录中,否则找不到文件
在struts2 中能通过 @ResultPath 设置多个 templateLoaderPath
在spring mvc中不能,但是这个在分为前台后台的系统中 比较有用因为 前台和后台再用不同的目录,
在struts2中能通过
struts2中还有个
<constant name="struts.convention.result.path" value="/WEB-INF/content/" />之后
auto_import=/WEB-INF/macros/admin/lib.ftl as csm 可以找到 lib.ftl
而在spring mvc中设置了 <property name="templateLoaderPath"> <value>/WEB-INF/view/admin/</value> </property>
以后,auto_import的文件必须在/WEB-INF/view/admin/的子目录中,否则找不到文件
在struts2 中能通过 @ResultPath 设置多个 templateLoaderPath
在spring mvc中不能,但是这个在分为前台后台的系统中 比较有用因为 前台和后台再用不同的目录,
在struts2中能通过
@Namespace("/admin/")来设置 而且这个属性能继承,对方法也有效这样能有利于,对url进行统一拦截,在springmvc中只能通过在方法上设置
@RequestMapping(value="/admin/login"),比较繁琐,当然可以采取其他办法,必须放到admin 包下
struts2中还有个
引用
@package
,可以统一拦截等,而在springmvc中没有
50 楼
icanfly
2010-04-19
据我所知,即将开源的人人网的web层架构就是由SpringMVC 2.5版本及以上修改而来的。连Annotation很多地方也就只是换了一个名字,用法都一样,还有一些增强功能。
49 楼
夜是天堂
2010-04-19
wen66 写道
Agrael 写道
其实我觉得,对于struts2使用/*的,就不要说是struts2造成的性能问题。。。
使用validate方法验证的,不要说struts2的验证不好。
内存泄漏那这个能说得更详细点么?
使用validate方法验证的,不要说struts2的验证不好。
内存泄漏那这个能说得更详细点么?
to Agrael
在我做的测试里对struts2使用的是*.action, *.jsp, 没有用到你所说的/*
内存泄漏这个你只要写个jsp. 如http://localhost/myapp/my.jsp?para1=1¶2=2¶3=3. 在my.jsp里可以什么逻辑都不要, 只要输出这三个参数值就行. 然后使用road runner 在500用户下狂压20分钟看看。
当然我用的是struts2.1.6来做试验的.
在高版本下有没有解决这个问题就不知道了
这位老兄能不能就测试过程及结果截一些图分享一下?
性能问题很尖锐,大家都比较关心。
48 楼
rendong
2010-04-19
spring mvc 有一个问题 struts2中设置了
auto_import=/WEB-INF/macros/admin/lib.ftl as csm 可以找到 lib.ftl
以后,auto_import的文件必须在/WEB-INF/view/admin/的子目录中,否则找不到文件
在struts2 中能通过 @ResultPath 设置多个 templateLoaderPath
在spring mvc中不能,但是这个在分为前台后台的系统中 比较有用因为 前台和后台再用不同的目录,
在struts2中能通过
struts2中还有个
<constant name="struts.convention.result.path" value="/WEB-INF/content/" />之后
auto_import=/WEB-INF/macros/admin/lib.ftl as csm 可以找到 lib.ftl
而在spring mvc中设置了 <property name="templateLoaderPath"> <value>/WEB-INF/view/admin/</value> </property>
以后,auto_import的文件必须在/WEB-INF/view/admin/的子目录中,否则找不到文件
在struts2 中能通过 @ResultPath 设置多个 templateLoaderPath
在spring mvc中不能,但是这个在分为前台后台的系统中 比较有用因为 前台和后台再用不同的目录,
在struts2中能通过
@Namespace("/admin/")来设置 而且这个属性能继承,对方法也有效这样能有利于,对url进行统一拦截,在springmvc中只能通过在方法上设置
@RequestMapping(value="/admin/login"),比较繁琐,当然可以采取其他办法,必须放到admin 包下
struts2中还有个
引用
@package
,可以统一拦截等,而在springmvc中没有
47 楼
rubys
2010-04-19
Spring3 MVC 里面 有没有代替 Struts2 里面的 @ResultPath 的功能?
发表评论
-
利用last modified头节省服务器资源和网络带宽
2011-09-19 17:27 1479last-modified 和 if-modified-sin ... -
系统架构中数据库的设计
2010-11-08 16:27 1821架构师往往是有前瞻性的 这个前瞻性是在很多项目经验的基础上总结 ... -
用telnet操作memcached
2010-07-16 14:14 1872telnet localhost 11211 流量统计 st ... -
spring的@Transactional为什么不能指定TransactionManager?
2010-06-10 16:44 7138用过spring的人应该都使用过@Transactional注 ... -
(转)Memcached的stats命令
2010-04-18 11:57 1849命令行查看Memcached运行状态 很多时候需要监控服务器 ... -
tomcat io 与 nio性能比较
2010-04-10 21:30 10787tomcat连接器(conncector)可以配置成NIO方式 ... -
nginx+tomcat配置
2010-04-07 15:16 4151一直听说nginx很厉害 今天装了一个 没有做任何配置直接ab ... -
浏览器缓存总结
2010-03-27 10:20 3085浏览器缓存主要有两类 ... -
理解linux下sendfile()系统调用
2010-03-21 11:29 3078服务器响应一个http静态资源请求的步骤如下: 1 把磁盘文件 ... -
freemarker生成静态jsp碎片乱码
2010-03-19 14:56 3145用freemarker定时生成jsp文件 然后通过jsp:i ... -
用apache ab做压力测试
2010-03-14 16:04 1881测试静态html资源 文件大小44byte,总请求数10000 ... -
apache ab命令详解(转)
2010-03-14 11:58 2637原文地址:http://blog.csdn.net/zhong ... -
压力测试关心的几个指标
2010-03-13 20:58 4752并发用户数 这个不是多说了,可简单理解为并发线程数 总请求次数 ... -
利用squid refresh_pattern缓存图片
2010-03-03 15:22 2964用浏览器请求一张图片1.gif的过程如下 1 发送http到s ... -
如何理解Squid refresh_pattern
2010-03-03 14:25 1649refresh_pattern的作用: 用于确定一个页面进入c ... -
关于Cache-Contro缓存
2010-03-03 10:01 1884浏览器缓存一直是web开发人员比较重视的优化点 这要有这个几个 ...
相关推荐
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 ...
spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包
**Struts2与Spring MVC比较:** 1. **灵活性**:Spring MVC允许更多的自定义,如自定义拦截器、视图解析器,而Struts2的扩展性相对弱些。 2. **依赖注入**:Spring MVC是Spring框架的一部分,天然支持DI,而Struts2...
下面我们将详细探讨Spring MVC的核心组件、工作流程以及与Struts2.x的比较。 1. **Spring MVC 核心组件** - **DispatcherServlet**:Spring MVC 的核心是DispatcherServlet,它作为一个前端控制器,负责接收请求...
2. Struts与Spring的整合,包括Action的配置、Service注入到Action、以及结果的处理。 3. 使用AspectJ的注解来定义切面,如`@Aspect`、`@Pointcut`、`@Before`、`@After`等。 4. 切面的织入策略,包括编译时织入和...
3. **Interceptor**:类似于Spring MVC的HandlerInterceptor,Struts2的拦截器用于在Action执行前后执行特定任务。 4. **Result**:处理Action执行后的结果,决定如何展示给用户。 5. **ValueStack**:Struts2的...
"spring-webmvc-struts"可能指的是Spring与Struts的集成包,Struts是另一个流行的Java Web MVC框架。这个库可能包含了一些桥接代码,帮助开发者将Spring的IoC(Inversion of Control,控制反转)和AOP功能与Struts的...
spring-webmvc-struts-2.5.6-sources
《构建摄影平台:Spring+Spring MVC+Struts+Hibernate整合详解》 在现代Web开发领域,Spring框架以其灵活性和强大的企业级应用支持而备受青睐。本项目“Spring+Spring MVC+Struts+Hibernate开发摄影平台完整版系统...
综上所述,"DWR与SPRING,DWR与STRUTS2的整合"主题涵盖了现代Java Web开发中重要的三个方面:DWR的实时通信能力、Spring的全面后端支持和Struts2的MVC架构。通过整合这三者,开发者可以构建出具有高效交互、灵活管理...
在IT行业中,MVC(Model-...理解并熟练运用MVC模式、Struts2框架、Spring框架以及Hibernate ORM,对于提升Java Web开发能力大有裨益。通过解答相关选择题,可以检验和巩固这些知识点的理解程度,进一步提升个人技能。
`struts2-spring-plugin-2.5.16.jar`是Struts2与Spring集成的插件,它使得Struts2可以利用Spring的依赖注入(DI)和面向切面编程(AOP)能力。通过这个插件,我们可以将Action类的实例化和管理交给Spring容器,从而...
Spring3、Struts2和Ibatis的整合,构建了一个完整的MVC+持久层架构。Spring作为整个应用的调度中心,管理所有对象的生命周期,包括Struts2的Action和Ibatis的SqlSession。Struts2负责接收HTTP请求,调用Action执行...
本项目“MVC注解Spring-Struts2Spring2hibernate3”结合了Spring、Struts2和Hibernate3这三大框架,以注解的方式实现了一个完整的MVC解决方案。下面将详细介绍这三个框架以及它们之间的协作。 首先,Spring框架是...
Spring MVC作为其Web层的一部分,与Struts相比,更加轻量级和灵活。Spring MVC通过DispatcherServlet作为入口点,处理HTTP请求,并通过配置或注解定义控制器(@Controller)。模型数据通常通过模型对象(Model或...