原文鏈接:http://www.yiidian.com/jsp/jsp mvc model.html 1 什麼是MVC模式 MVC,代表模型(Model),視圖(View),控制器(Controller)。這是一種將業務邏輯,表現邏輯和數據分開的設計模式。 充當視圖和模型之間的介面。控制器攔截所有傳 ...
原文鏈接:http://www.yiidian.com/jsp/jsp-mvc-model.html
1 什麼是MVC模式
MVC,代表模型(Model),視圖(View),控制器(Controller)。這是一種將業務邏輯,表現邏輯和數據分開的設計模式。
控制器
充當視圖和模型之間的介面。控制器攔截所有傳入的請求。
模型
代表應用程式的狀態,即數據。它還可以具有業務邏輯。
視圖
即UI(用戶界面)。
2 MVC(Model2)模式的優勢
多個視圖共用一個模型,大大提高代碼的可重用性。
易於維護的大型應用程式
3 MVC模式的示例
在下麵的示例中,我們使用Servlet作為控制器,使用JSP頁面作為視圖組件,使用Java Bean類作為模型。
3.1 編寫index.jsp
<%@ page language="java" contentType="text/html;charset=utf-8" %>
<html>
<html>
<head>
<meta charset="utf-8">
<title>一點教程網-JSP的MVC模式</title>
</head>
<body>
<form action="ControllerServlet" method="post">
用戶名:<input type="text" name="name"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="登錄">
</form>
</body>
</html>
3.2 編寫User實體類
package com.yiidian;
/**
* 一點教程網 - http://www.yiidian.com
*/
public class User {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean validate(){
if(password.equals("admin")){
return true;
}
else{
return false;
}
}
}
3.3 編寫ControllerServlet
package com.yiidian;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 一點教程網 - http://www.yiidian.com
*/
public class ControllerServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
String name=request.getParameter("name");
String password=request.getParameter("password");
User bean=new User();
bean.setName(name);
bean.setPassword(password);
request.setAttribute("bean",bean);
boolean status=bean.validate();
if(status){
RequestDispatcher rd=request.getRequestDispatcher("login-success.jsp");
rd.forward(request, response);
}
else{
RequestDispatcher rd=request.getRequestDispatcher("login-error.jsp");
rd.forward(request, response);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
}
3.4 編寫login-success.jsp
<%@ page import="com.yiidian.User" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>一點教程網-JSP的MVC模式</title>
</head>
<body>
<p>你已經成功登錄</p>
<%
User bean=(User) request.getAttribute("bean");
out.print("歡迎你, "+bean.getName());
%>
</body>
</html>
3.5 編寫login-error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>一點教程網-JSP的MVC模式</title>
</head>
<body>
<p>抱歉! 用戶名或密碼錯誤</p>
<form action="ControllerServlet" method="post">
用戶名:<input type="text" name="name"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="登錄">
</form>
</body>
</html>
3.6 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>ControllerServlet</servlet-name>
<servlet-class>com.yiidian.ControllerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name>
<url-pattern>/ControllerServlet</url-pattern>
</servlet-mapping>
</web-app>
3.7 運行測試
輸入錯誤的密碼,顯示如下:
輸入正確的密碼(admin),顯示如下:
歡迎關註我的公眾號::一點教程。獲得獨家整理的學習資源和日常乾貨推送。
如果您對我的系列教程感興趣,也可以關註我的網站:yiidian.com