第1个回答 2013-09-21
M是model(模型),V是view(视图),c是controler(控制器)。
不用MVC模式时,一般图省力,把需要生成的html代码写在Servlet的out.print()方法内,然后从生成的页面再跳进一个Servlet……这样就把M、V、C完全混到一块了。这样的优点是容易理解,也不用来回传参,但是可复用性差,修改时很困难,可读性差得可以。
用MVC时,V一般是JSP页面,负责用户交互界面,实现“显示”功能;C是Servlet,只负责读取表单参数并处理后,把不同结果贴在不同属性上,并根据结果传给不同的JSP页面,实现“控制”功能;M则是普通的可复用类,放在哪都能用的,一般用JavaSE就足够了,供Servlet调用。
这种方式主要是将M、V、C分离,提高可复用性、可读性和修改方便,但设计复杂,性能受损。
所以,理论上MVC适用于所有项目,但小系统、不常修改的系统可以不用MVC;而大的、硬件条件好的系统要用MVC,否则到维护时或者工作移交时,无比恶心的可维护性和可读性将是恶梦。
PS:举个例子,电脑管理系统。比如要查询电脑。先有一个JSP页面(V)让你输入电脑编号,然后提交表单后传给一个Servlet(C),它根据传进来的电脑号调用可复用类(M,比如数据库操作类,随便起个名:DbOperation)中的查询方法(比如doSearch()),返回一个查询结果,把这个结果帖在属性上传给负责结果显示的JSP页面(V),如果失败可以把出错信息传给负责出错提示的JSP页面(V),实现控制器的功能。
而那个DbOperation类则是可以复用的Java Bean,只要用得到,数据库名称、格式什么的一致,就可以在这个JavaEE项目上用,也可以在另一个JavaEE项目上用,还可以在一个JavaSE项目上用……
如果做成Web服务,则这个Java Bean就完全平台无关和语言无关了,可以在.NET项目上用。本回答被网友采纳