该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-29
人家应该是想问这2种MVC的区别以及优缺点吧?
|
|
返回顶楼 | |
发表时间:2010-07-29
SeanHe 写道 用过spring mvc 就知道它比struts2 要爽很多,而且据论坛里的朋友测试Spring mvc的性能也优于struts2
在没有官方声明前,不要妄下结论。 |
|
返回顶楼 | |
发表时间:2010-07-29
yangyw 写道 mengqingyu 写道 有了struts mvc可以不用spring mvc 反之一样,spring mvc不爽的地方就是不如struts 接前台传来的参数方便,struts可以直接定义多个成员变量通过set方法来接参数,多个方法可以共享变量,但spring每个方法只能定义一个对象来接受前台参数而且仅仅是局部变量。
Spring3.0 MVC 个人觉得很好,很人性化,直接用annotation方式+restful,很舒服,controller的代码越来越干净了,各个传入的参数也完全是分离的,而不是一对参数放在一起,这点我觉得很舒服。 @RequestMapping(value="getUsers") public String getUsers(@RequestParam(value="pageNo",required=false)String pageNo,ModelMap modelMap){ System.out.println("current pageNo is " + pageNo); int intPageNo = pageNo == null||"".equals(pageNo.trim())?1:Integer.parseInt(pageNo); ItemPage itemPage = demoService.getUsers(intPageNo, 2); modelMap.put("itemPage", itemPage); return "list"; } 我觉得Spring MVC 中 返回数据对象 ModelMap modelMap还需要作为入参传进来,这点不完美,感觉不是很Perfect |
|
返回顶楼 | |
发表时间:2010-07-29
两者不可同日而语
前者是web界经典的mvc框架系Apache软件基金下Jakarta项目的一部分,主要架构设计和开发者是Craig R.McClanahan,到现在已经将近8年时间了 后者是Rod Johnson 是对《Expert One-on-One J2EE Design and Development》一书中所阐述的设计思想的具体实现,基于interface21 开发包 引入了IOC、 AOP、 等重要思想的轻量级框架。 |
|
返回顶楼 | |
发表时间:2010-07-29
javaest 写道 yangyw 写道 mengqingyu 写道 有了struts mvc可以不用spring mvc 反之一样,spring mvc不爽的地方就是不如struts 接前台传来的参数方便,struts可以直接定义多个成员变量通过set方法来接参数,多个方法可以共享变量,但spring每个方法只能定义一个对象来接受前台参数而且仅仅是局部变量。
Spring3.0 MVC 个人觉得很好,很人性化,直接用annotation方式+restful,很舒服,controller的代码越来越干净了,各个传入的参数也完全是分离的,而不是一对参数放在一起,这点我觉得很舒服。 @RequestMapping(value="getUsers") public String getUsers(@RequestParam(value="pageNo",required=false)String pageNo,ModelMap modelMap){ System.out.println("current pageNo is " + pageNo); int intPageNo = pageNo == null||"".equals(pageNo.trim())?1:Integer.parseInt(pageNo); ItemPage itemPage = demoService.getUsers(intPageNo, 2); modelMap.put("itemPage", itemPage); return "list"; } 我觉得Spring MVC 中 返回数据对象 ModelMap modelMap还需要作为入参传进来,这点不完美,感觉不是很Perfect 比起传个HttpRequest或者在function中通过获取HttpRequest,个人感觉还是好一点,看太多了HttpRequest了,眼睛疲劳! |
|
返回顶楼 | |
发表时间:2010-07-29
yangyw 写道 mengqingyu 写道 有了struts mvc可以不用spring mvc 反之一样,spring mvc不爽的地方就是不如struts 接前台传来的参数方便,struts可以直接定义多个成员变量通过set方法来接参数,多个方法可以共享变量,但spring每个方法只能定义一个对象来接受前台参数而且仅仅是局部变量。
Spring3.0 MVC 个人觉得很好,很人性化,直接用annotation方式+restful,很舒服,controller的代码越来越干净了,各个传入的参数也完全是分离的,而不是一对参数放在一起,这点我觉得很舒服。 @RequestMapping(value="getUsers") public String getUsers(@RequestParam(value="pageNo",required=false)String pageNo,ModelMap modelMap){ System.out.println("current pageNo is " + pageNo); int intPageNo = pageNo == null||"".equals(pageNo.trim())?1:Integer.parseInt(pageNo); ItemPage itemPage = demoService.getUsers(intPageNo, 2); modelMap.put("itemPage", itemPage); return "list"; } 说的好像你没用过struts2试的,struts2 N年以前就支持了 @Action("letter") public String letter() { letter = letterService.get(letterId); //只能看自己的 if (letter == null || letter.getSendUser().getUid() != getSessionUserId()) { return "error1"; } //附件 List<Annex> annexList = annexService.getAnnexList(letter.getAnnexs()); getActionContext().put("annexList", annexList); return "letter"; } |
|
返回顶楼 | |
发表时间:2010-07-29
spring 与 struts 的设计理念不同....所以在实现上各有自己的一套风格...spring 的出现无疑让aop 与 ioc 等设计思想更加完美地体现出来....spring 是一套框架,我们使用就必须按照它的规则来玩.所以你看着不爽的地方,我可能看着很爽,这就是个人观点了。你可以说spring 的配置太繁琐了,也可以说........
|
|
返回顶楼 | |
发表时间:2010-07-29
kaowww153 写道 yangyw 写道 mengqingyu 写道 有了struts mvc可以不用spring mvc 反之一样,spring mvc不爽的地方就是不如struts 接前台传来的参数方便,struts可以直接定义多个成员变量通过set方法来接参数,多个方法可以共享变量,但spring每个方法只能定义一个对象来接受前台参数而且仅仅是局部变量。
Spring3.0 MVC 个人觉得很好,很人性化,直接用annotation方式+restful,很舒服,controller的代码越来越干净了,各个传入的参数也完全是分离的,而不是一对参数放在一起,这点我觉得很舒服。 @RequestMapping(value="getUsers") public String getUsers(@RequestParam(value="pageNo",required=false)String pageNo,ModelMap modelMap){ System.out.println("current pageNo is " + pageNo); int intPageNo = pageNo == null||"".equals(pageNo.trim())?1:Integer.parseInt(pageNo); ItemPage itemPage = demoService.getUsers(intPageNo, 2); modelMap.put("itemPage", itemPage); return "list"; } 说的好像你没用过struts2试的,struts2 N年以前就支持了 @Action("letter") public String letter() { letter = letterService.get(letterId); //只能看自己的 if (letter == null || letter.getSendUser().getUid() != getSessionUserId()) { return "error1"; } //附件 List<Annex> annexList = annexService.getAnnexList(letter.getAnnexs()); getActionContext().put("annexList", annexList); return "letter"; } 应该说吧,注解这个东西JDK1.5之后就开始流行了,struts2没有说它不好,只是我个人比较喜欢无extend的controller,还有restful方式,另外对ajax的支持也是我觉得很舒服的! 我并没有说struts2不好,只是从个人感情上我觉得spring3 MVC 比较和我胃口; spring3 MVC 也不见得就很好,之前有个项目客户端需要用到flex,用spring3 MVC 和 flex结合会有些小问题,官方的做法是两个spring ,个人感觉是浪费资源,所以后面还是改选用struts2 让同事去进行业务开发。 |
|
返回顶楼 | |
发表时间:2010-07-29
面试官这个问题很2.........
|
|
返回顶楼 | |
发表时间:2010-07-29
个人觉得两者之间的区别还是比较明显的,先说一下他们的共同点:
1.都是mvc框架; 2.感觉struts的action类似于spring的ioc,都是使用java反射机制来实现的依赖注入; 3.struts2的拦截器使用也类似于spring的aop,都是通过动态代理实现的; 他们的区别,在我看来有如下: 1.配置不一样(这点就不多说了) 2.spring的控制器对象的处理请求方法需要带有HttpServletRequest和HttpServletResponse参数,这样不便于调试; 3.参数的接收,在struts2中通过set方法就实现了,而spring则取药显式的去从request中获取,另外参数的传递也比较方便; 4.struts2处理请求的返回页比较方便,通过acction的返回的结果名称,定位返回的页面或者重定向到另一个action 5.struts2同时提供了对于请求变量的校验和类型的转换; 6.我觉得spring在mvc框架中相对于struts2的优势在于它的IOC,struts2只是注入action,而spring可以将更多的bean注入到这个action中; 综上所述,springmvc较struts2更轻量,但是没有struts2在mvc方面功能强大; |
|
返回顶楼 | |