浅谈什么是MVC设计模式

您所在的位置:网站首页 医学mvc是什么意思 浅谈什么是MVC设计模式

浅谈什么是MVC设计模式

2024-07-05 15:24| 来源: 网络整理| 查看: 265

什么是MVC?

     MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

换句话说:

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。   通常模型对象负责在数据库中存取数据。 View(视图)是应用程序中处理数据显示的部分。   通常视图是依据模型数据创建的。 Controller(控制器)是应用程序中处理用户交互的部分。   通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。      MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式

Model:常用javabean去实现,通过各种类来对数据库的数据进行获取,并封装在对象当中。

View:常用JSP来实现,通过可直接观察的JSP页面来展示我们从数据库中获取的数据。

Controller:常用servlet来实现,通过servlet来获取经过javabean包装过的对象(已存入数据库中的数据),然后再发送数据传输到JSP界面。

这里可能有人会想知道,javabean是什么:

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,long和class方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。

JavaBean一般由三部分组成:

1.属性

2.方法

3.事件

实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。由于javabean是基于 java语言的,因此javabean不依赖平台,具有以下特点: 1. 可以实现代码的重复利用 2. 易编写、易维护、易使用 3. 可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译 总结: 粗俗的讲,javabean就是一个简单的类,但是这个类要有set()、get()方法,还有类中的属性都要是私有化的(private),方法是公有化的(public),还有就是要有一个无参的构造方法,如果你要设置了带参数的构造方法,那么请把无参的构造方法重新写一次,因为默认的构造方法会被带参数的构造方法覆盖掉。 根据经典模式(JSP + servlet + javabean)来举范例: 场景:我们把数据库中的表的信息显示在JSP页面上。 这是数据库的数据: 我们需要创建一个动态网页项目(Dynamic Web project ),然后倒入两个jar包进去这个项目中。

   倒入项目的2种方法:

   1.设置成maven工程,在pom.xml文件中倒入jar包的

   

javax.servlet jstl 1.2 mysql mysql-connector-java 5.1.39 2.下载jar包,然后倒入到WebContent/WEB-INF/lib目录下(不要导错地方)

msyql-connector-java-5.1.39.jar:连接数据库使用的。

点击打开链接

jstl-1.2.jar:用于在jsp页面进行数据库的数据迭代输出。

点击打开链接

关于什么是jstl,还有它的用法,博主推荐一下这篇博文:

点击打开链接

Model(模型)

(创建两个包,一个model包用于建立连接数据库和获取数据,一个modelUser包用于建立存放数据的对象User)

MysqlConnection.java:

package com.ricky.model; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class MysqlConnection { /** * 连接MySQL数据库,返回一个连接 * @return */ public static Connection getConnectiion() { Connection conn=null; Properties p=new Properties(); try { p.load(new FileInputStream("E:/码神/mvc/src/jdbc.properties")); Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection(p.getProperty("ip"), p.getProperty("username"), p.getProperty("password")); System.out.println(p.getProperty("ip")); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } }

GetUser.java:

package com.ricky.model; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.ricky.modelUser.User; public class GetUser { /** * 用于从数据库获取信息,然后把信息存放在一个一个User对象中 * @return 返回一个装User对象的链表 */ public static List getUserList() { List userList=new ArrayList(); Connection conn=MysqlConnection.getConnectiion(); Statement stat=null; ResultSet rs=null; try { stat=conn.createStatement(); rs=stat.executeQuery("select * from user"); while(rs.next()){ String id=rs.getString("id"); String username=rs.getString("username"); String password=rs.getString("password"); System.out.println(id+" "+username+" "+password); User user=new User(id,username,password); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); stat.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return userList; } }

User.java:

package com.ricky.modelUser; public class User { private String id; private String username; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public User(String id,String username,String password){ this.id=id; this.username=username; this.password=password; } }

View(视图)

(创建一个简单的jsp页面来显示数据)

这里需要在jsp文件中引用jstl(上面有篇博文有详细介绍用法):

userList.jsp:

Insert title here 序号 id username password Controller(控制器)

(创建userServlet来接受数据库的数据对象User,控制数据对象输出到jsp页面)

userServlet.java:

package com.ricky.controller; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ricky.model.GetUser; import com.ricky.modelUser.User; /** * Servlet implementation class userServlet */ @WebServlet("/userServlet") public class userServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public userServlet() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List userList=GetUser.getUserList(); //设置一个userList属性传到下面的jsp页面 request.setAttribute("userList", userList); request.getRequestDispatcher("/userList.jsp").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

运行userServlet:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3