什麼是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:
-
<dependency>
-
<groupId>javax.servlet</groupId>
-
<artifactId>jstl</artifactId>
-
<version>1.2</version>
-
</dependency>
-
-
<!-- https:
-
<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 {
-
-
-
-
-
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 {
-
-
-
-
-
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;
-
-
-
-
-
@WebServlet("/userServlet")
-
public class userServlet extends HttpServlet {
-
private static final long serialVersionUID = 1L;
-
-
-
-
-
public userServlet() {
-
super();
-
}
-
-
-
-
-
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
List<User> userList=GetUser.getUserList();
-
-
request.setAttribute("userList", userList);
-
request.getRequestDispatcher("/userList.jsp").forward(request, response);
-
}
-
-
-
-
-
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
-
doGet(request, response);
-
}
-
-
}<span style="color:#ff0000;">
-
</span>
運行userServlet:
![]()