JSP中的MVC開發模式

1 什麼是MVC模式

MVC,代表模型(Model),視圖(View),控制器(Controller)。這是一種將業務邏輯,表現邏輯和數據分開的設計模式。

控制器充當視圖和模型之間的接口。控制器攔截所有傳入的請求。

模型代表應用程序的狀態,即數據。它還可以具有業務邏輯。

視圖即UI(用戶界面)。

2 MVC(Model2)模式的優勢

多個視圖共享一個模型,大大提高代碼的可重用性。 易於維護的大型應用程序

file

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 運行測試

file

輸入錯誤的密碼,顯示如下:

file

輸入正確的密碼(admin),顯示如下:

file

file

歡迎關注我的公衆號::一點教程。獲得獨家整理的學習資源和日常乾貨推送。 如果您對我的系列教程感興趣,也可以關注我的網站:yiidian.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章