MVC设计模式

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





你可能感兴趣的:(spring,mvc,架构设计,javaweb,开发模式)