论坛首页 Java企业应用论坛

MVC面试题:有了stuts的mvc为什么还要spring的mvc

浏览 53578 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-07-29  
人家应该是想问这2种MVC的区别以及优缺点吧?
0 请登录后投票
   发表时间:2010-07-29  
SeanHe 写道
用过spring mvc 就知道它比struts2 要爽很多,而且据论坛里的朋友测试Spring mvc的性能也优于struts2

在没有官方声明前,不要妄下结论。
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2010-07-29  
两者不可同日而语
前者是web界经典的mvc框架系Apache软件基金下Jakarta项目的一部分,主要架构设计和开发者是Craig R.McClanahan,到现在已经将近8年时间了
后者是Rod Johnson 是对《Expert One-on-One J2EE Design and Development》一书中所阐述的设计思想的具体实现,基于interface21 开发包
引入了IOC、 AOP、 等重要思想的轻量级框架。
0 请登录后投票
   发表时间: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了,眼睛疲劳!
0 请登录后投票
   发表时间: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";
	}
0 请登录后投票
   发表时间:2010-07-29  
spring 与 struts 的设计理念不同....所以在实现上各有自己的一套风格...spring 的出现无疑让aop 与 ioc 等设计思想更加完美地体现出来....spring 是一套框架,我们使用就必须按照它的规则来玩.所以你看着不爽的地方,我可能看着很爽,这就是个人观点了。你可以说spring 的配置太繁琐了,也可以说........
0 请登录后投票
   发表时间: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 让同事去进行业务开发。
0 请登录后投票
   发表时间:2010-07-29  
面试官这个问题很2.........
0 请登录后投票
   发表时间: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方面功能强大;
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics