什么是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页面上。
这是数据库的数据:
我们需要创建一个动态网页项目(Dynamic Web project ),然后倒入两个jar包进去这个项目中。
倒入项目的2种方法:
1.设置成maven工程,在pom.xml文件中倒入jar包的<dependency></dependency>
-
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
-
<dependency>
-
<groupId>javax.servlet</groupId>
-
<artifactId>jstl</artifactId>
-
<version>1.2</version>
-
</dependency>
-
-
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
-
<dependency>
-
<groupId>mysql</groupId>
-
<artifactId>mysql-connector-java</artifactId>
-
<version>5.1.39</version>
-
</dependency>
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<User> getUserList() {
-
List<User> userList=new ArrayList<User>();
-
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(上面有篇博文有详细介绍用法):
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

userList.jsp:
-
<%@ page language="java" contentType="text/html; charset=UTF-8"
-
pageEncoding="UTF-8"%>
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
<title>Insert title here</title>
-
</head>
-
<body>
-
<table>
-
<tr>
-
<th>序号</th>
-
<th>id</th>
-
<th>username</th>
-
<th>password</th>
-
</tr>
-
<c:forEach items="${userList }" var="user" varStatus="st">
-
<tr>
-
<td><c:out value="${st.index+1 }"></c:out></td>
-
<td><c:out value="${user.id }"></c:out></td>
-
<td><c:out value="${user.username }"></c:out></td>
-
<td><c:out value="${user.password }"></c:out></td>
-
</tr>
-
</c:forEach>
-
</table>
-
</body>
-
</html>
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<User> 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);
-
}
-
-
}<span style="color:#ff0000;">
-
</span>
运行userServlet:
