一、什么是MVC框架;
二、如何运用MVC框架;
三、MVC框架的实例。
一、MVC框架
(1)什么是MVC框架:
· MVC即(Model View Controller)模式—视图—控制器框架。
MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则
是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可
以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。
C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
简单来说:
MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出
分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们
各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean模式。
(2)视图:
View(视图)显示数据(数据库记录)。
MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有
真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视
图来讲,它只是作为一种输出数据并允许用户操纵的方式。
(3)模式
Model(模型)表示应用程序核心(比如数据库记录列表)。
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的
处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对
象来处理数据库,被模型返回的数据的格式与模型无关,这样一个模型能为
多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重
用,所以减少了代码的重复性。
(4)控制器
Controller(控制器)处理输入(写入数据库记录)。
控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单
击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做
任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确
定用哪个视图来显示返回的数据。
(5)框架是一种代码重用
A、内部重用,即在同一应用中能公共使用的抽象块;
B、代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;
C、应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
可以说框架是一种软件,而设计模式是软件的知识。
二、如何运用MVC框架
1、定义Bean来表示数据:
(1)何为Bean?
遵循某些简单约定的常规Java类,这些约定由JavaBean所规定。
A、Bean类中有一个默认的构造函数;
B、Bean类中不应该有公开的实例变量(字段);
C、持续性的值应通过 getXxx 和 setXxx 来进行访问。
Bean类的定义不应放在含JSP的文件的目录中,而应该放在安装Servlet的目录中。
个人所理解为:Bean属于模式中的类,定义private变量与各变量相应的get、set方法,并且含有构造函数。
2、使用Servlet处理请求:
(1)何为Servlet?
Servlet是JSP的基础,从功能上讲,Servlet等价于JSP,JSP的内置
对象几乎全是基于Servlet的。
Servlet是运行在Web服务器上的程序,它担当与Web浏览器发出的请
求与HTTP服务器上的数据库应用程序之间的中间层。
(2)Servlet的基本结构:
public class RegisterInfo extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{.....}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{.....}
通过HttpServletRequest 可以得到所有用户输入的数据;
通过HtpServletResponse 可以获得PrintWriter,然后用println将相应的数据发送给客户并在客户的浏览器上显示出来。
个人所理解为:Servlet属于控制器,HttpServletRequest 获取视图上的信息传送给Servlet,Servlet寻找到相应的Bean,交由其对应的类或方法处理,而后HtpServletResponse 将Bean处理过后的信息传送给Servlet选中的视图,用以显示。
此处注意:可以由Servlet或JSP来获取请求参数,但输出确是由JSP完成的,
Servlet不会创建任何输出,所以Servlet并不会调用response.setContentType,
response.getWriter或out.println等方法。
3、填写Bean:
在读取了表单信息以后,就由Servlet根据这些数据调用应用代码,获得最后的结果后,将结果放置在第一步定义的Bean中。
个人所理解为:根据数据寻找到应该操作这些数据的方法,并进行操作。
4、将Bean存储到请求或会话上下文中:
Servlet调用请求或会话上下文对象的setAttrbute方法,存储表示请求的
Bean的引用。
个人所理解为:Servlet寻找到相应的Bean,对该类进行对象实例化与set操作。
5、将请求转发到JSP页面:
Servlet确定哪个JSP页面适合当前的情况,并使用RequestDispatcher的
forward方法将控制转移到那个页面。
6、从Bean中获取数据:
JSP页面使用jsp:useBean以及第4步中的位置相匹配的scope访问Bean。
之后JSP页面使用jsp:getPropery输出Bean的属性,JSP页面并不创建或修
改Bean,只是提取和显示由Servlet创建的数据。