- 浏览: 1264967 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
最后的攻城狮:
这也太乱了
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 ,然后直接返回响应文本即可
附上一段代码
我赞成okayeye的意见,在富客户端的情况下,springMVC和struts2的流转控制可以放到客户端来做,比如Flex,服务器端尽量只做数据读写和服务集成,这样可以获取更高的并发流量
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
顶,支持。
这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。
这一点其实我在最早的讨论中就指出来了。SpringMVC的Annotation来指定URL Mapping的可维护性为0。
这里的本质问题在于Annotation和XML到底谁更加适合来做某种类型的配置。
当我们引入一个Annotation,实际上获得的好处在于我们可以在Java Code级别解决配置问题,但同时,我们也引入了其他的问题:
1) 引入了Annotation,就引入了对框架的强依赖,一个原本可以单独测试的东西,却必须放在容器中做集成测试。
2) 引入了Annotation,就将这个Annotation所代表的配置类型,分散到了不同的Java Code中。就像在一个沙地里面,我们要寻找散落在各处的黄豆,实际上是非常困难的。
当我们引入XML的时候,虽然我们引入的是一个额外的配置文件和额外的配置,但是我们却获得的统一的查找路径,可维护性得到了保证。
XML也不推荐大量使用,最好是使用约定,不按照约定来命名类和方法,根本就无法访问url,这样即减少了配置文件,又能很方便地找到URL所对应的控制器类,而且还能强迫那些“胡乱写类名、方法名”的“懒汉”把命名规范起来。
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
顶,支持。
这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。
这一点其实我在最早的讨论中就指出来了。SpringMVC的Annotation来指定URL Mapping的可维护性为0。
这里的本质问题在于Annotation和XML到底谁更加适合来做某种类型的配置。
当我们引入一个Annotation,实际上获得的好处在于我们可以在Java Code级别解决配置问题,但同时,我们也引入了其他的问题:
1) 引入了Annotation,就引入了对框架的强依赖,一个原本可以单独测试的东西,却必须放在容器中做集成测试。
2) 引入了Annotation,就将这个Annotation所代表的配置类型,分散到了不同的Java Code中。就像在一个沙地里面,我们要寻找散落在各处的黄豆,实际上是非常困难的。
当我们引入XML的时候,虽然我们引入的是一个额外的配置文件和额外的配置,但是我们却获得的统一的查找路径,可维护性得到了保证。
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
顶,支持。
这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
是的,如果没有源码,这个维护确实是问题,但是咱不可否认,Springmvc 开发起来快!struts2和SpringMVC都用过!
我一般是自定义一个ajax试图处理器,分别用来返回纯文本,xml和json类型!
我在项目里使用的是 struts2,至少用 visualvm 发现性能瓶颈绝不在 struts2,一般都是在 数据库io和其他网络io上。
而且,我目前的测试结果是,两台机器(16G内存,双路四核cpu,15000转硬盘,两年前的dell服务器),5个tomcat节点,1个nginx负载均衡,带有业务的用例很轻松就可以跑到 1万 多的 tps (业务用例要经过struts2 自定义拦截器,访问redis,访问 memcached,访问数据库,并提供只读事务)
struts2默认的拦截器不用的全部要去掉,经我们测试是影响性能的,当然我们的并发是超高的,能看出区别。
我想问一下,用ssh写的程序,1个应用服务器节点,每秒处理多少个请求才算是性能比较不错了?硬件上相对于目前大众化的服务器配置来说(16G内存,双路四核cpu,15000转硬盘),网络带宽不考虑。
我目前的项目要求 每秒要能够处理 24000 个并发请求(读取数据库的业务),我计划用1台server扛下来,但目前看来还差的远,唉。
你先不要考虑其他因素,你可以自己用纯servlet和struts2处理纯内存操作作性能对比,有点差距的。
一般认为Tomcat最高并发在300-400左右,综合经验。所以一台扛下24000个请求不可能的。
然后说数据库的问题,由于app这层可以很方便的扩展,而且app的机器往往可以很便宜,配置要求不高。数据库要支持24000个并发请求,就有点问题了,要么上缓存架构,要么数据库这一层做扩展。
要考虑tomcat集群+ngnix,另外考虑加上缓存架构,一台是很难扛下来的
一般来说,app之前的缓存(例如SQUID)稳定之后,没有命中的请求单台不能超过每秒300,否则响应时间会很慢的。
我在项目里使用的是 struts2,至少用 visualvm 发现性能瓶颈绝不在 struts2,一般都是在 数据库io和其他网络io上。
而且,我目前的测试结果是,两台机器(16G内存,双路四核cpu,15000转硬盘,两年前的dell服务器),5个tomcat节点,1个nginx负载均衡,带有业务的用例很轻松就可以跑到 1万 多的 tps (业务用例要经过struts2 自定义拦截器,访问redis,访问 memcached,访问数据库,并提供只读事务)
struts2默认的拦截器不用的全部要去掉,经我们测试是影响性能的,当然我们的并发是超高的,能看出区别。
我想问一下,用ssh写的程序,1个应用服务器节点,每秒处理多少个请求才算是性能比较不错了?硬件上相对于目前大众化的服务器配置来说(16G内存,双路四核cpu,15000转硬盘),网络带宽不考虑。
我目前的项目要求 每秒要能够处理 24000 个并发请求(读取数据库的业务),我计划用1台server扛下来,但目前看来还差的远,唉。
你先不要考虑其他因素,你可以自己用纯servlet和struts2处理纯内存操作作性能对比,有点差距的。
一般认为Tomcat最高并发在300-400左右,综合经验。所以一台扛下24000个请求不可能的。
然后说数据库的问题,由于app这层可以很方便的扩展,而且app的机器往往可以很便宜,配置要求不高。数据库要支持24000个并发请求,就有点问题了,要么上缓存架构,要么数据库这一层做扩展。
要考虑tomcat集群+ngnix,另外考虑加上缓存架构,一台是很难扛下来的
我在项目里使用的是 struts2,至少用 visualvm 发现性能瓶颈绝不在 struts2,一般都是在 数据库io和其他网络io上。
而且,我目前的测试结果是,两台机器(16G内存,双路四核cpu,15000转硬盘,两年前的dell服务器),5个tomcat节点,1个nginx负载均衡,带有业务的用例很轻松就可以跑到 1万 多的 tps (业务用例要经过struts2 自定义拦截器,访问redis,访问 memcached,访问数据库,并提供只读事务)
struts2默认的拦截器不用的全部要去掉,经我们测试是影响性能的,当然我们的并发是超高的,能看出区别。
我想问一下,用ssh写的程序,1个应用服务器节点,每秒处理多少个请求才算是性能比较不错了?硬件上相对于目前大众化的服务器配置来说(16G内存,双路四核cpu,15000转硬盘),网络带宽不考虑。
我目前的项目要求 每秒要能够处理 24000 个并发请求(读取数据库的业务),我计划用1台server扛下来,但目前看来还差的远,唉。
你先不要考虑其他因素,你可以自己用纯servlet和struts2处理纯内存操作作性能对比,有点差距的。
一般认为Tomcat最高并发在300-400左右,综合经验。所以一台扛下24000个请求不可能的。
然后说数据库的问题,由于app这层可以很方便的扩展,而且app的机器往往可以很便宜,配置要求不高。数据库要支持24000个并发请求,就有点问题了,要么上缓存架构,要么数据库这一层做扩展。
当初还框架的时候目的比较单纯---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" ; }
评论
206 楼
guojigjkill
2014-05-05
111
205 楼
victorming
2011-03-26
chrislee1982 写道
struts同样可以做方法上的拦截,这样配置就可以了
<action name="login" class="xx.LoginAction" method="login">
<interceptor....../><!-- interceptor A -->
<result...../>
</action>
<action name="logout" class="xx.LoginAction" method="logout">
<interceptor....../> ><!-- interceptor B -->
<result...../>
</action>
<action name="login" class="xx.LoginAction" method="login">
<interceptor....../><!-- interceptor A -->
<result...../>
</action>
<action name="logout" class="xx.LoginAction" method="logout">
<interceptor....../> ><!-- interceptor B -->
<result...../>
</action>
我赞成okayeye的意见,在富客户端的情况下,springMVC和struts2的流转控制可以放到客户端来做,比如Flex,服务器端尽量只做数据读写和服务集成,这样可以获取更高的并发流量
204 楼
chrislee1982
2011-03-18
struts同样可以做方法上的拦截,这样配置就可以了
<action name="login" class="xx.LoginAction" method="login">
<interceptor....../><!-- interceptor A -->
<result...../>
</action>
<action name="logout" class="xx.LoginAction" method="logout">
<interceptor....../> ><!-- interceptor B -->
<result...../>
</action>
<action name="login" class="xx.LoginAction" method="login">
<interceptor....../><!-- interceptor A -->
<result...../>
</action>
<action name="logout" class="xx.LoginAction" method="logout">
<interceptor....../> ><!-- interceptor B -->
<result...../>
</action>
203 楼
george
2011-02-17
downpour 写道
george 写道
downpour 写道
shiren1118 写道
你觉得这有啥可炫耀的吗?spring的多view解析实现这个跟玩一样
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
顶,支持。
这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。
这一点其实我在最早的讨论中就指出来了。SpringMVC的Annotation来指定URL Mapping的可维护性为0。
这里的本质问题在于Annotation和XML到底谁更加适合来做某种类型的配置。
当我们引入一个Annotation,实际上获得的好处在于我们可以在Java Code级别解决配置问题,但同时,我们也引入了其他的问题:
1) 引入了Annotation,就引入了对框架的强依赖,一个原本可以单独测试的东西,却必须放在容器中做集成测试。
2) 引入了Annotation,就将这个Annotation所代表的配置类型,分散到了不同的Java Code中。就像在一个沙地里面,我们要寻找散落在各处的黄豆,实际上是非常困难的。
当我们引入XML的时候,虽然我们引入的是一个额外的配置文件和额外的配置,但是我们却获得的统一的查找路径,可维护性得到了保证。
XML也不推荐大量使用,最好是使用约定,不按照约定来命名类和方法,根本就无法访问url,这样即减少了配置文件,又能很方便地找到URL所对应的控制器类,而且还能强迫那些“胡乱写类名、方法名”的“懒汉”把命名规范起来。
202 楼
downpour
2011-02-17
george 写道
downpour 写道
shiren1118 写道
你觉得这有啥可炫耀的吗?spring的多view解析实现这个跟玩一样
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
顶,支持。
这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。
这一点其实我在最早的讨论中就指出来了。SpringMVC的Annotation来指定URL Mapping的可维护性为0。
这里的本质问题在于Annotation和XML到底谁更加适合来做某种类型的配置。
当我们引入一个Annotation,实际上获得的好处在于我们可以在Java Code级别解决配置问题,但同时,我们也引入了其他的问题:
1) 引入了Annotation,就引入了对框架的强依赖,一个原本可以单独测试的东西,却必须放在容器中做集成测试。
2) 引入了Annotation,就将这个Annotation所代表的配置类型,分散到了不同的Java Code中。就像在一个沙地里面,我们要寻找散落在各处的黄豆,实际上是非常困难的。
当我们引入XML的时候,虽然我们引入的是一个额外的配置文件和额外的配置,但是我们却获得的统一的查找路径,可维护性得到了保证。
201 楼
george
2011-02-16
downpour 写道
shiren1118 写道
你觉得这有啥可炫耀的吗?spring的多view解析实现这个跟玩一样
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
顶,支持。
这点我深有体会,Spring MVC 3.0.5 留给开发者的自由度太大了,让开发者可以在一个controller 里,在class上和method上自由定义url,这样的话,会造成同一个包路径下的controller 映射到任何层次级别的url上去,也会造成不同的包路径下的controller 映射到相同层次的url上去,甚至会出现多个controller 映射到同一个url,一句话概括就是:【杂乱无章】,这样的自由度泛滥,在大的项目中必定造成维护上的混乱,不要指望每个程序员都是命名规范,自觉遵循项目约定的“顺草”,基本上每个项目组都是“杂草丛生”。
200 楼
yangfuchao418
2011-02-12
一个破框架吵啥。俺都是手写
199 楼
xiaoyu
2011-01-25
REST URL 不一定就搜索引擎友好, 这个要看哪个搜索引擎了。 如果是百度。。。。。 哎, 这个百度的新闻收录。就
198 楼
jarorwar
2011-01-25
不知道在谈论什么,大家都吵起来了!
197 楼
jarorwar
2011-01-25
downpour 写道
shiren1118 写道
你觉得这有啥可炫耀的吗?spring的多view解析实现这个跟玩一样
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
看看这兄弟的帖子吧http://www.iteye.com/topic/748006
帅哥,咱不再做框架之争了好么?SpringMVC与Struts2都是优秀的Web层框架。框架的优劣,是程序员自身的哲学选择。有些东西,我说是缺点,你却说是优点,这是永远也争不清楚的。
在这里我需要给那些使用SpringMVC的同学提个醒。Annotation进行UrlMapping在大型的web应用中的可维护性是值得质疑的。在团队开发中,这一问题显得格外严重。所以,请不要神化SpringMVC的某些功能。谢谢。
是的,如果没有源码,这个维护确实是问题,但是咱不可否认,Springmvc 开发起来快!struts2和SpringMVC都用过!
196 楼
jarorwar
2011-01-25
oakeye 写道
还有就是中文问题 我只能复写那个StringHttpMessageConverter,然后把编码方式写成utf-8
我一般是自定义一个ajax试图处理器,分别用来返回纯文本,xml和json类型!
195 楼
george
2011-01-17
一直在使用struts2。
这个帖子从第一页看到最后,也没有看到Spring 3 mvc有哪些决定性优势。
至于REST式的URL,我想问的是:它有什么优势?
如果你说“对搜索引擎友好”,那么,如果我的项目是内网使用,根本不会发布到互联网上,REST URL对搜索引擎友好的优点,还有什么意义?
spring mvc需要对每个方法,使用注解定义方法所对应的URL,也需要在方法中指定URL所绑定的视图文件路径,这些在struts2中都可以使用struts2-convention-plugin-2-2-1.jar插件,以“约定大于配置”的方式来绑定,不需要额外的xml配置,也不需要注解来“隐形配置”【当然,如果你有复杂的跳转需求,你也可以在action类中,使用@Results({@Result(name = "toInfoList", location = "info-list.action?viewType=Common", type = "redirectAction")})这样的注解,定义action的跳转url】,大大节省了时间,而且强制约束了视图文件和action类的路径,使得视图文件和action类的路径更加集中、命名更加规范规范。
但是Spring 3 MVC,除非你自己强力约束自己,否则视图文件可以存放在文件夹内的任何层次内,这样就会给开发者“杂乱无章地存放试图文件”提供温床。
而且,Spring 3 MVC 控制器的方法参数,既可以是和Url参数对应的参数,也可以是HttpServletRequest类的对象request,还可以是实体类的对象,还要考虑同一个URL,如果method=RequestMethod.GET会对应一个方法,如果method=RequestMethod.PUT,又对应另一个方法,还要考虑方法的@RequestMapping注解内,有没有使用类似“params = "viewType=showUri“这样的参数定义,URL有没有传递这个参数过来,如果传递了会映射到这个方法上,如果没有传递则不能映射到这个方法上,诸如此类,总体感觉就是:“Spring 3 MVC”杂乱无章,给开发者的自由度太大,容易让懒惰的程序员把程序搞得乌七八糟,当然,如果是一个写程序非常规范的程序员,严格约束自己的开发风格,命名规范上严格约束自己,这样的程序员来使用Spring 3 MVC,也能做到“井然有序”,但毕竟Spring 3 MVC给了开发者太多的自由度,为懒惰的程序员提供了创造“杂乱无章的程序”的温床。
批评了Spring 3 mvc之后,称赞一下它比较好的地方,对json和xml的支持比较好,这样,使用一些JavaScript树的时候,树的数据源就不用使用Servlet来提供了。
我觉得Spring 3 MVC如果不采用“约定大于配置”的方式,使用“类路径 + 方法名” 对应 “约定的URL” ,对应“约定路径的视图文件”这种方式的话,对于struts2,它是没有什么优势的。
这个帖子从第一页看到最后,也没有看到Spring 3 mvc有哪些决定性优势。
至于REST式的URL,我想问的是:它有什么优势?
如果你说“对搜索引擎友好”,那么,如果我的项目是内网使用,根本不会发布到互联网上,REST URL对搜索引擎友好的优点,还有什么意义?
spring mvc需要对每个方法,使用注解定义方法所对应的URL,也需要在方法中指定URL所绑定的视图文件路径,这些在struts2中都可以使用struts2-convention-plugin-2-2-1.jar插件,以“约定大于配置”的方式来绑定,不需要额外的xml配置,也不需要注解来“隐形配置”【当然,如果你有复杂的跳转需求,你也可以在action类中,使用@Results({@Result(name = "toInfoList", location = "info-list.action?viewType=Common", type = "redirectAction")})这样的注解,定义action的跳转url】,大大节省了时间,而且强制约束了视图文件和action类的路径,使得视图文件和action类的路径更加集中、命名更加规范规范。
但是Spring 3 MVC,除非你自己强力约束自己,否则视图文件可以存放在文件夹内的任何层次内,这样就会给开发者“杂乱无章地存放试图文件”提供温床。
而且,Spring 3 MVC 控制器的方法参数,既可以是和Url参数对应的参数,也可以是HttpServletRequest类的对象request,还可以是实体类的对象,还要考虑同一个URL,如果method=RequestMethod.GET会对应一个方法,如果method=RequestMethod.PUT,又对应另一个方法,还要考虑方法的@RequestMapping注解内,有没有使用类似“params = "viewType=showUri“这样的参数定义,URL有没有传递这个参数过来,如果传递了会映射到这个方法上,如果没有传递则不能映射到这个方法上,诸如此类,总体感觉就是:“Spring 3 MVC”杂乱无章,给开发者的自由度太大,容易让懒惰的程序员把程序搞得乌七八糟,当然,如果是一个写程序非常规范的程序员,严格约束自己的开发风格,命名规范上严格约束自己,这样的程序员来使用Spring 3 MVC,也能做到“井然有序”,但毕竟Spring 3 MVC给了开发者太多的自由度,为懒惰的程序员提供了创造“杂乱无章的程序”的温床。
批评了Spring 3 mvc之后,称赞一下它比较好的地方,对json和xml的支持比较好,这样,使用一些JavaScript树的时候,树的数据源就不用使用Servlet来提供了。
我觉得Spring 3 MVC如果不采用“约定大于配置”的方式,使用“类路径 + 方法名” 对应 “约定的URL” ,对应“约定路径的视图文件”这种方式的话,对于struts2,它是没有什么优势的。
194 楼
skyHuang
2010-12-23
<p>使用中,, 确实比struts方便很多 lz分析的很到位<img src="http://dl.iteye.com/upload/attachment/374351/523ce437-572d-32e8-9d26-458299af6de3.jpg" alt="" width="741" height="330"></p>
193 楼
pengjj2
2010-12-23
我就想问一下,springMVC3有没有解决嵌套对象的问题。。
让我可以这么写<input id="user.id" type="text"/>
model为role,role中嵌套user
让我可以这么写<input id="user.id" type="text"/>
model为role,role中嵌套user
192 楼
helloworldwyn
2010-12-09
选择springmvc,感觉比struts开发效率高
191 楼
wenxiang_tune
2010-11-29
我只能说,这个帖子真的很棒。。目前用struts2.2.1谢谢。。
190 楼
icewubin
2010-11-04
glovebx 写道
icewubin 写道
rustlingwind 写道
icewubin 写道
rustlingwind 写道
wen66 写道
strut2和spring3的性能问题, 大家可以写个简单的例子, 然后用loadruner跑一下, 就知道性能的差别的, 这个就是属于谁用谁知道的东西.
我在项目里使用的是 struts2,至少用 visualvm 发现性能瓶颈绝不在 struts2,一般都是在 数据库io和其他网络io上。
而且,我目前的测试结果是,两台机器(16G内存,双路四核cpu,15000转硬盘,两年前的dell服务器),5个tomcat节点,1个nginx负载均衡,带有业务的用例很轻松就可以跑到 1万 多的 tps (业务用例要经过struts2 自定义拦截器,访问redis,访问 memcached,访问数据库,并提供只读事务)
struts2默认的拦截器不用的全部要去掉,经我们测试是影响性能的,当然我们的并发是超高的,能看出区别。
我想问一下,用ssh写的程序,1个应用服务器节点,每秒处理多少个请求才算是性能比较不错了?硬件上相对于目前大众化的服务器配置来说(16G内存,双路四核cpu,15000转硬盘),网络带宽不考虑。
我目前的项目要求 每秒要能够处理 24000 个并发请求(读取数据库的业务),我计划用1台server扛下来,但目前看来还差的远,唉。
你先不要考虑其他因素,你可以自己用纯servlet和struts2处理纯内存操作作性能对比,有点差距的。
一般认为Tomcat最高并发在300-400左右,综合经验。所以一台扛下24000个请求不可能的。
然后说数据库的问题,由于app这层可以很方便的扩展,而且app的机器往往可以很便宜,配置要求不高。数据库要支持24000个并发请求,就有点问题了,要么上缓存架构,要么数据库这一层做扩展。
要考虑tomcat集群+ngnix,另外考虑加上缓存架构,一台是很难扛下来的
一般来说,app之前的缓存(例如SQUID)稳定之后,没有命中的请求单台不能超过每秒300,否则响应时间会很慢的。
189 楼
里克尔奇
2010-11-04
不错,拜读一下。
188 楼
glovebx
2010-11-04
icewubin 写道
rustlingwind 写道
icewubin 写道
rustlingwind 写道
wen66 写道
strut2和spring3的性能问题, 大家可以写个简单的例子, 然后用loadruner跑一下, 就知道性能的差别的, 这个就是属于谁用谁知道的东西.
我在项目里使用的是 struts2,至少用 visualvm 发现性能瓶颈绝不在 struts2,一般都是在 数据库io和其他网络io上。
而且,我目前的测试结果是,两台机器(16G内存,双路四核cpu,15000转硬盘,两年前的dell服务器),5个tomcat节点,1个nginx负载均衡,带有业务的用例很轻松就可以跑到 1万 多的 tps (业务用例要经过struts2 自定义拦截器,访问redis,访问 memcached,访问数据库,并提供只读事务)
struts2默认的拦截器不用的全部要去掉,经我们测试是影响性能的,当然我们的并发是超高的,能看出区别。
我想问一下,用ssh写的程序,1个应用服务器节点,每秒处理多少个请求才算是性能比较不错了?硬件上相对于目前大众化的服务器配置来说(16G内存,双路四核cpu,15000转硬盘),网络带宽不考虑。
我目前的项目要求 每秒要能够处理 24000 个并发请求(读取数据库的业务),我计划用1台server扛下来,但目前看来还差的远,唉。
你先不要考虑其他因素,你可以自己用纯servlet和struts2处理纯内存操作作性能对比,有点差距的。
一般认为Tomcat最高并发在300-400左右,综合经验。所以一台扛下24000个请求不可能的。
然后说数据库的问题,由于app这层可以很方便的扩展,而且app的机器往往可以很便宜,配置要求不高。数据库要支持24000个并发请求,就有点问题了,要么上缓存架构,要么数据库这一层做扩展。
要考虑tomcat集群+ngnix,另外考虑加上缓存架构,一台是很难扛下来的
187 楼
icewubin
2010-11-04
rustlingwind 写道
icewubin 写道
rustlingwind 写道
wen66 写道
strut2和spring3的性能问题, 大家可以写个简单的例子, 然后用loadruner跑一下, 就知道性能的差别的, 这个就是属于谁用谁知道的东西.
我在项目里使用的是 struts2,至少用 visualvm 发现性能瓶颈绝不在 struts2,一般都是在 数据库io和其他网络io上。
而且,我目前的测试结果是,两台机器(16G内存,双路四核cpu,15000转硬盘,两年前的dell服务器),5个tomcat节点,1个nginx负载均衡,带有业务的用例很轻松就可以跑到 1万 多的 tps (业务用例要经过struts2 自定义拦截器,访问redis,访问 memcached,访问数据库,并提供只读事务)
struts2默认的拦截器不用的全部要去掉,经我们测试是影响性能的,当然我们的并发是超高的,能看出区别。
我想问一下,用ssh写的程序,1个应用服务器节点,每秒处理多少个请求才算是性能比较不错了?硬件上相对于目前大众化的服务器配置来说(16G内存,双路四核cpu,15000转硬盘),网络带宽不考虑。
我目前的项目要求 每秒要能够处理 24000 个并发请求(读取数据库的业务),我计划用1台server扛下来,但目前看来还差的远,唉。
你先不要考虑其他因素,你可以自己用纯servlet和struts2处理纯内存操作作性能对比,有点差距的。
一般认为Tomcat最高并发在300-400左右,综合经验。所以一台扛下24000个请求不可能的。
然后说数据库的问题,由于app这层可以很方便的扩展,而且app的机器往往可以很便宜,配置要求不高。数据库要支持24000个并发请求,就有点问题了,要么上缓存架构,要么数据库这一层做扩展。
发表评论
-
利用last modified头节省服务器资源和网络带宽
2011-09-19 17:27 1453last-modified 和 if-modified-sin ... -
系统架构中数据库的设计
2010-11-08 16:27 1799架构师往往是有前瞻性的 这个前瞻性是在很多项目经验的基础上总结 ... -
用telnet操作memcached
2010-07-16 14:14 1851telnet localhost 11211 流量统计 st ... -
spring的@Transactional为什么不能指定TransactionManager?
2010-06-10 16:44 7107用过spring的人应该都使用过@Transactional注 ... -
(转)Memcached的stats命令
2010-04-18 11:57 1826命令行查看Memcached运行状态 很多时候需要监控服务器 ... -
tomcat io 与 nio性能比较
2010-04-10 21:30 10743tomcat连接器(conncector)可以配置成NIO方式 ... -
nginx+tomcat配置
2010-04-07 15:16 4122一直听说nginx很厉害 今天装了一个 没有做任何配置直接ab ... -
浏览器缓存总结
2010-03-27 10:20 3058浏览器缓存主要有两类 ... -
理解linux下sendfile()系统调用
2010-03-21 11:29 3060服务器响应一个http静态资源请求的步骤如下: 1 把磁盘文件 ... -
freemarker生成静态jsp碎片乱码
2010-03-19 14:56 3127用freemarker定时生成jsp文件 然后通过jsp:i ... -
用apache ab做压力测试
2010-03-14 16:04 1857测试静态html资源 文件大小44byte,总请求数10000 ... -
apache ab命令详解(转)
2010-03-14 11:58 2606原文地址:http://blog.csdn.net/zhong ... -
压力测试关心的几个指标
2010-03-13 20:58 4719并发用户数 这个不是多说了,可简单理解为并发线程数 总请求次数 ... -
利用squid refresh_pattern缓存图片
2010-03-03 15:22 2919用浏览器请求一张图片1.gif的过程如下 1 发送http到s ... -
如何理解Squid refresh_pattern
2010-03-03 14:25 1624refresh_pattern的作用: 用于确定一个页面进入c ... -
关于Cache-Contro缓存
2010-03-03 10:01 1855浏览器缓存一直是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整合时需要用到的包
struts1工作原理 struts2工作原理 struts1和struts2比较 spring mvc工作原理 struts和spring mvc比较
Spring3_MVC与Struts2.x比较.pdfSpring3_MVC与Struts2.x比较.pdf
Spring3_MVC与Struts2.x比较.docxSpring3_MVC与Struts2.x比较.docx
spring-webmvc-struts.jar aspectjweaver.jar
spring-webmvc-struts-2.5.6-sources
1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。 2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3、...
spring.jar spring-webmvc-struts.jar spring-webmvc.jar 很难找.......欢迎下载!
1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。 2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3、...
SpringMVC与struts2比较及技术特点
MVC注解Spring-Struts2Spring2hibernate3,可以成功的跑起来的三个例子。很值得借鉴的,孩子努力学习吧
SSH教程,介绍MVC、Struts2、Spring2、Hibernate3、SSH开发、Ajax
对于Struts和Spring两种MVC框架的比较
spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...