MVC 是 Model-View-Controller的简称,即模型-视图-控制器的简称。
MVC是一种设计模式,它把应用程序分成三个核心模块:模型,视图,控制器,它们各自处理自己的事情。
模型(model)
POJO,普通的java类,以及访问数据库都叫model。
模型是应用程序的主体部分,模型表示业务数据和业务逻辑。
一个模型能为多个视图提供数据。
由于应用模型的代码只需写一次就可以被多个视图重用,所以提高了代码的可重用性。
视图(view)
视图是用户看到并与之交互的界面,作用如下:
视图向用户显示相关的数据
接受用户的输入
不进行任何实际的业务处
控制器(Controller)
控制器接受用户的输入并调用模型和视图去完成用户的需求。
控制器接收请求并决定调用哪个模型组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据。
案例:
mysql数据库名:students
创建一个表:student
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`sex` varchar(2) NOT NULL,
`age` int(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
创建一个servlet类 : ListAllStudentsServlet
package com.alin.javaweb.mvc;
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;
@WebServlet("/listAllStudents")
public class ListAllStudentsServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StudentDao studentDao = new StudentDao();
List<Student> students = studentDao.getAll();
request.setAttribute("student", students);
request.getRequestDispatcher("/students.jsp").forward(request, response);
}
}
一个Javabean:Student类
package com.alin.javaweb.mvc;
public class Student {
private int id;
private String name;
private String sex;
private int age;
public Student() {
}
public Student(int id, String name, String sex, int age) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
连接数据库的Dao类:StudentDao
package com.alin.javaweb.mvc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StudentDao {
private final static String url = "jdbc:mysql://localhost:3306/Students";
private final static String user = "root";
private final static String password = "2012122131435";
public static List<Student> getAll() {
List<Student> students = new ArrayList<Student>();
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url,user,password);
String sql = "select * from student";
statement = connection.prepareStatement(sql);
resultSet = statement.executeQuery();
while(resultSet.next()) {
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
String sex = resultSet.getString(3);
int age = resultSet.getInt(4);
Student student = new Student(id, name, sex, age);
students.add(student);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(resultSet != null) {
resultSet.close();
}
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if(statement != null) {
statement.close();
}
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if(connection != null) {
connection.close();
}
} catch (SQLException e2) {
e2.printStackTrace();
}
}
return students;
}
}
两个jsp页面: listAllStudents.jsp 和 显示查询所有学生的students.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
<a href="listAllStudents">listAllStudents</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.List" %>
<%@ page import="com.alin.javaweb.mvc.Student" %>
<!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>listAllStudent</title>
</head>
<body>
<%
List<Student> stud = (List<Student>) request.getAttribute("student");
%>
<table width="577" border="1" cellpadding="1" cellspacing="1" bordercolor="#0000FF"
style="color:red" align="center" >
<tr >
<th>id</th>
<th>name</th>
<th>sex</th>
<th>age</th>
</tr>
<%
for(Student stu : stud){
%>
<tr>
<td align="center" style="color:#33ffff"><%= stu.getId() %></td>
<td align="center" style="color:#33ffff"><%= stu.getName() %></td>
<td align="center" style="color:#33ffff"><%= stu.getSex() %></td>
<td align="center" style="color:#33ffff"><%= stu.getAge() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
启动tomcat:运行结果