MVC最常用最基础的开发模式
一、前言
初学 Java 及 Java web 会接触到 MVC 开源设计架构模式;本身 MVC 并不是一种设计模式;百度百科的关于设计模式的答案:设计模式有哪些?工厂模式、适配器模式、策略模式等等。事实上 MVC 也并不在 GOF 的23个设计模式之列,但这种架构被广泛的应用,GOF 也给与很高的评价。开源框架常用的大致就是 Spring ,Struts ,Hibernate 等。
二、MVC 的理解
MVC 是一种开发模式,是很强大,应用很广泛的。是面向对象的基础的常见开发模式。
MVC定义:即Model-View-Controller,把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层,即模型层、视图层、控制层。(http://blog.csdn.net/zhoudaxia/article/details/23048035)
M (model):模 式 ;简单理解为类,对象,项目中涉及的相关对象。
V (view):视 图 ;就是用户或管理员的操作界面,简单理解为界面、前台。
C (controller):控制器 ;理解为后台,对视图交互,用户命令或请求与对象操作进行处理,并操作返回结果。
下面的例子是我对 MVC 模式的理解(个人见解,认知较浅不足之处见谅)
最常见的管理系统设计,以学生信息管理系统设计为例。
首先说说该系统要实现的功能;存在三种对象:学生,教师,管理员;分别能实现登录,教师能实现注册;教师能对学生进行删除修改等操作,管理员可查看所有信息等权限。
(1.)M 模式;与项目有关的需要被创建的对象或类,
学生类(基本属性:编号,姓名,性别,年龄,科目,成绩,密码等);可登陆查看,个人信息成绩等基本属性;
教师对象(基本属性:编号,姓名,年龄,年龄,学院,密码等);可对学生进行基本的增删改查操作;
管理员类(基本属性:编号,姓名,账号,密码);可查询所有用户详细信息,并有增删改查的权限;
(2.)V 视图,我们所看到的视图即前台界面
此项目中,学生的登录界面,登陆成功后的个人信息展示的视图界面;及教师进行操作的界面,管理员的后台操作界面视图等。
提供用户与程序之间的交互,操作等。
(3.)C 控制,就是后台处理
在登录界面,用户点击登录按钮发送请求命令,对应后台接受命令,获取前台数据,进行后台验证处理,返回结果,登陆成功或失败。
同样其他界面也有其他功能的请求,例如教师对应的操作视图中删除学生的操作,后台接收并处理,返回删除成功或失败的结果。
查询的命令,修改信息的命令,这些来自前台界面的请求,后台接收到请求后进行相关处理。就是 controller。
到这里大致能了解到 MVC 开发模式的优点,逻辑清晰,业务分离。三者相互独立,相互联系。一个模型可对应多个视图,写视图界面时,不用考虑,对象的属性什么的,也不用考虑后台的操作。写模型的时候考虑项目所需要的对象,及对象具有的基本属性,对象之间的联系,可有后台交互。后台控制负责前台的请求,及数据的处理操作。
个人见解,不足之处请不吝赐教,共同学习进步 ^_^
三、MVC 模式的实现
前端 jsp (java-sever-page)页面(类似html5)写一些视图界面,及布局,form 表单等。用于交互后台,后台 servlet 接收到请求,获取页面数据对相关对象,调用其方法来验证处理数据,返回处理结果到前台 jsp 界面,或返回到另一个视图上,即页面的跳转。这些基于对象与对象类的构造方法,及接口方法来实现。创建模型,对象相关类是项目的基础也是类似需求分析,通过实际需要写对象的接口即实现接口的类,前端发送请求,后台拿到数据后调用这些接口方法,来处理数据。三者相互作用,相互依存。同时最大的优点是相互独立。这不矛盾。当对其 MVC 有一定的理解之后。
数据的两种常见提交方式:
(1)
<form action="要提交的路径" method="Post">
<input type="text" name="ShuJu1" />
<input type="submit" value="提交" />
</form>
(2)
<a href="目标路径?Id=10&&Password=123456hpu" ></a>
后台 servlet 进行交互,接收 jsp 的数据
String shuju1 = (String)request.getParamter("ShuJu1");//通过名字属性获取
int id = Integer.parseInt(request.getParamter("Id"));
String = (String)request.getParamter("Password");
下面这一段代码是截取一个 jsp 文件的部分,l里面包括数据的提交,和接收后台返回的结果
<body>
<%
int id = Integer.parseInt(request.getParameter("Id"));
String sql = "select * from record where id = "+id;
Connection conn = DBO.getconnection();
Statement st = null;
ResultSet rs = null;
st = conn.createStatement();
rs = st.executeQuery(sql);
while(rs.next()){
Record re = new Record();
re.setId(rs.getInt("id"));
re.setData(rs.getString("data"));
re.setDate(rs.getString("date"));
%>
<form action="ChangeServlet" method="Post"><br><br>
id:<input type="text" name="Id" value="<%=re.getId() %>"><br><br>
data:<input type="text" name="Data" value="<%=re.getData() %>"><br><br>
date:<input type="text" name="Date" value="<%=re.getDate() %>"><br><br>
<input type="submit" />
</form>
<%} %>
</body>
</html>
四、MVC 的六大优点
网上的专有名词,本不想用这些词的,最后的一总结,毕竟是比较官方的语言,也比较专业吧
低耦合性 ;
高重用性和可适用性 ;
较低的生命周期成本技术 ;
快速的部署 ;
可维护性 ;
有利于软件工程化管理
五、最后这是一个基于 MVC 模式的 Java web 的登录注册:(可能不是一个好例子,网上有更多的例子)
http://blog.csdn.net/niaonao/article/details/51064978