`

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

阅读更多
今天一同学 去面试 关于mvc的面试题

面试官问道:有了stuts的mvc为什么还要spring的mvc ,你觉得spring有什么不爽的地方?

我同学一时哑了   想了半天不知道该怎么说 乱七八糟说了一通  面试官说  please get out !

大家有什么要说的没
分享到:
评论
31 楼 liu_shui8 2010-07-29  
我觉得这个问题,Rod Johnson比我更适合回答?
hi,johnson,为什么你要闲的搞个spring mvc?
30 楼 pgy20032000 2010-07-29  
可能他就是想看看你的同学会spring mvc不 , 结果露馅了 哈哈
29 楼 fover1985 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方面功能强大;
28 楼 youjianbo_han_87 2010-07-29  
面试官这个问题很2.........
27 楼 yangyw 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 让同事去进行业务开发。
26 楼 aiyanbo 2010-07-29  
spring 与 struts 的设计理念不同....所以在实现上各有自己的一套风格...spring 的出现无疑让aop 与 ioc 等设计思想更加完美地体现出来....spring 是一套框架,我们使用就必须按照它的规则来玩.所以你看着不爽的地方,我可能看着很爽,这就是个人观点了。你可以说spring 的配置太繁琐了,也可以说........
25 楼 kaowww153 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";
	}
24 楼 yangyw 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了,眼睛疲劳!
23 楼 zhaomingzm_23 2010-07-29  
两者不可同日而语
前者是web界经典的mvc框架系Apache软件基金下Jakarta项目的一部分,主要架构设计和开发者是Craig R.McClanahan,到现在已经将近8年时间了
后者是Rod Johnson 是对《Expert One-on-One J2EE Design and Development》一书中所阐述的设计思想的具体实现,基于interface21 开发包
引入了IOC、 AOP、 等重要思想的轻量级框架。
22 楼 javaest 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
21 楼 kaowww153 2010-07-29  
SeanHe 写道
用过spring mvc 就知道它比struts2 要爽很多,而且据论坛里的朋友测试Spring mvc的性能也优于struts2

在没有官方声明前,不要妄下结论。
20 楼 liujun999999 2010-07-29  
人家应该是想问这2种MVC的区别以及优缺点吧?
19 楼 yangyw 2010-07-29  
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";
	}





18 楼 downpour 2010-07-29  
SeanHe 写道
用过spring mvc 就知道它比struts2 要爽很多,而且据论坛里的朋友测试Spring mvc的性能也优于struts2


没事情不要随便瞎下结论。除非你亲手证实了。
17 楼 SeanHe 2010-07-29  
用过spring mvc 就知道它比struts2 要爽很多,而且据论坛里的朋友测试Spring mvc的性能也优于struts2
16 楼 wese345 2010-07-29  
可以说,用了spring的IOC等,还有spring自身的MVC,还用struts干嘛,省的整合啦
15 楼 javaest 2010-07-29  
真是一个狗屁问题,请问诸位面试官问点有营养的面试问题好不
14 楼 yanlizhang515 2010-07-29  
"不爽",“get out”这些词怎么可能从面试官嘴里说出呢?
你在诋毁面试官的形象哦
13 楼 chen4765654 2010-07-29  
spring3的mvc还是很不错的,开发和配置简化,针对Action方法拦截请求,支持rest,参数注入,json处理都设计的很好,完全可以取代struts2
12 楼 zero1111 2010-07-29  
有了google 为什么还要百度,Bing呢?

相关推荐

    Stuts+Spring(郭克华)源码2

    Struts主要处理MVC(模型-视图-控制器)架构中的控制器部分,提供了一种组织和管理业务逻辑的方式,而Spring则是一个全面的后端框架,提供了依赖注入、面向切面编程以及对其他框架如Hibernate的集成。"Stuts+Spring...

    Stuts2+Spring+JDBC的配置

    Struts2、Spring和JDBC是Java开发中常用的三大技术框架,它们的集成可以构建一个高效、可维护的Web应用程序。下面将详细讲解这三者之间的配置及其重要性。 首先,Struts2是一个基于MVC(Model-View-Controller)...

    Stuts+Spring(郭克华)源码1

    Struts和Spring是两个在Java Web开发中广泛使用的框架,它们分别是MVC(Model-View-Controller)架构的实现和依赖注入(Dependency Injection,DI)及面向切面编程(Aspect-Oriented Programming,AOP)的工具。...

    Stuts +Spring + Hibernate整合简单项目开发

    Demo实现了Spring 管理Stuts 和hibernate 技术(内容很简单,适合初学者)我是因为下载一个没有分了,所以上传一个简单的Demo上去。功能实现了从数据库映射出数据;供参考,含数据.sql文件;(因为spring可以管理...

    spring 和stuts2整合

    整合 Spring 和 Struts2 的主要目标是实现 MVC(模型-视图-控制器)架构,其中 Spring 作为服务层和数据访问层的管理框架,Struts2 作为表现层的框架。以下是一些关键步骤和知识点: 1. **配置 Spring**:首先,你...

    spring+stuts+hibernate论坛BBS.

    标题 "spring+stuts+hibernate论坛BBS" 提示我们这是一个基于Java技术栈的Web应用程序,使用Spring、Struts和Hibernate这三个框架构建的在线论坛。这些框架在企业级应用开发中非常常见,用于实现模型-视图-控制器...

    Stuts+Spring

    Stuts+Spring

    stuts+spring+hibernate整合

    - **提升灵活性和可扩展性**: 业务逻辑交由Spring处理,数据访问交由Hibernate处理,这样的设计使得层次结构更加清晰,有助于系统的维护和扩展。 - **依赖注入**: 通过依赖注入(DI)和面向切面编程(AOP),Spring...

    STUTS.rar_stuts

    同学录应用通常包括用户管理、信息展示、交互等功能,这样的例子有助于学习者理解如何组织和实现 MVC 结构。 标签 "stuts" 明确地指出了这个项目与 Struts 框架相关。Struts 的核心特性包括: 1. **ActionServlet*...

    spring、mybatis、stuts2整合

    在Java企业级开发中,Spring、MyBatis和Struts2是三个非常重要的框架,它们分别负责不同层面的职责:Spring作为一个全能型框架,管理着应用的依赖注入和事务处理;MyBatis则是一个轻量级的持久层框架,简化了SQL操作...

    struts2,spring,mybatis汇总jar包下载

    Struts2、Spring和MyBatis是Java Web开发中的三个重要框架,它们分别负责MVC模式中的动作控制、依赖注入和持久层操作。这个压缩包包含的是一系列这些框架所需的库文件,便于开发者在自己的项目中集成和使用。 1. ...

    stuts2增删改查再送登录

    这个项目"stuts2增删改查再送登录"是基于Struts2、Hibernate和Spring三大核心技术构建的,旨在提供一个基础的CRUD(创建、读取、更新、删除)操作和用户登录功能的示例。以下将详细解析这个项目的知识点: 1. **...

    struts+spring

    Struts1.3是一款基于MVC(Model-View-Controller)设计模式的框架,主要用于控制应用程序的流程,而Spring2.5则是一个全面的轻量级应用框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,以及对其他框架的...

    stuts2 spring hibernate 集成

    完整的SSH集成,STRUTS2.0+SPRING 2.5+ HIBERNATE 3.6完美集成

    java超经典面试题

    Java作为一门广泛使用的编程语言,其面试题涵盖了众多领域,包括基础语法、面向对象、集合框架、多线程、异常处理、JVM内存管理、IO流、网络编程、设计模式、Spring框架、Struts框架、Tomcat服务器等。以下是对这些...

    Stuts入门---------Stuts入门

    - **清晰的架构**: Struts 基于 MVC(Model-View-Controller)设计模式,使得应用程序具有清晰的结构,易于维护和扩展。 - **广泛的采用**: Struts 在 Java Web 开发领域得到了广泛应用,尤其是在企业级应用中。 ...

    Stuts2+hibernate3.0+Spring3.0整合

    Struts2、Hibernate3.0和Spring3.0是Java Web开发中著名的三大框架,它们分别负责MVC模式中的Action层、持久化层和业务层管理。SSH整合是指将这三个框架集成到一起,以实现更高效、更灵活的Web应用开发。在本项目中...

    Stuts2.2.1+hibernate3.5.2+Spring 3.0.5框架 实现了增删改查

    这个框架实现了基本的增删改查 数据库为mysql 所有jar包都全 自己手动搭的 平台是myeclipse6.0 不是很专业 但是完全能用 希望对大家有所帮助 包中数据库文件 和说明文档都全 大家可以自己看着弄

    struts2.2.3+spring3.0.1+hibernate3.6.5整合jar包

    Struts2、Spring和Hibernate是Java开发中三大主流框架,它们的组合被称为SSH(Struts2、Spring、Hibernate)集成,常用于构建企业级的Web应用程序。本篇将详细讲解这三个框架的核心概念、功能以及它们如何协同工作。...

    Stuts2-Spring3.X-Mybatis全xml配置项目包

    【Stuts2-Spring3.X-Mybatis全xml配置项目包】是一个集成开发环境下的Web应用项目,主要涉及三大核心技术:Struts2、Spring3.X和Mybatis。这个项目采用全XML配置方式,这意味着所有的配置信息,包括Struts2的动作...

Global site tag (gtag.js) - Google Analytics