Maison >Problème commun >Qu'est-ce que le modèle de conception MVC

Qu'est-ce que le modèle de conception MVC

coldplay.xixi
coldplay.xixioriginal
2020-12-17 15:32:4214162parcourir

Le modèle de conception MVC est un modèle de conception logicielle qui divise l'application en trois modules de base ci-dessus : la couche métier, la couche de vue et la couche de contrôle. La couche métier est chargée de mettre en œuvre la logique métier de l'application et d'encapsuler diverses méthodes de traitement des données ; la couche vue est chargée d'afficher l'application à l'utilisateur. Elle obtient les données d'entrée de l'utilisateur et les transmet à la couche métier pour traitement. la couche de contrôle. La couche obtient les résultats renvoyés par la couche métier et les affiche à l'utilisateur. La couche de contrôle est chargée de contrôler le flux de l'application. Elle reçoit les données de la couche de visualisation, puis sélectionne une entreprise à traiter dans la couche métier.

Qu'est-ce que le modèle de conception MVC

L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.

Qu'est-ce que le modèle de conception MVC ?

MVC signifie Model-View-Controller (Model-View-Controller). Il s'agit d'un modèle de conception logiciel qui est apparu pour la première fois. dans le langage Smalltalk, et a ensuite été recommandé par Sun comme modèle de conception pour la plate-forme Java EE.

MVC divise l'application en trois modules de base ci-dessus. Ces trois modules peuvent également être appelés couche métier - couche de vue - couche de contrôle. Comme leurs noms l'indiquent, les rôles principaux de chacun d'entre eux dans l'application sont les suivants :

 Couche métier  : Responsable de la mise en œuvre de la logique métier de l'application et de l'encapsulation des diverses méthodes de traitement des données. . Peu importe la manière dont elles seront affichées par la couche de vue ou appelées par le contrôleur, il accepte uniquement les données, les traite et renvoie un résultat.

 Couche d'affichage : Responsable de l'affichage de l'application à l'utilisateur. Il obtient les données d'entrée de l'utilisateur et les transmet à la couche métier pour traitement via la couche de contrôle, puis les obtient. les données renvoyées par la couche métier via la couche de contrôle. Les résultats sont affichés à l'utilisateur.

 Couche de contrôle  : Responsable du contrôle du processus de l'application. Elle reçoit les données transmises par la couche de vue, puis sélectionne une entreprise dans la couche métier à traiter et reçoit les résultats renvoyés. par la couche de gestion et sélectionnez une vue dans la couche de vue pour afficher les résultats.

La figure suivante peut être utilisée pour représenter la relation entre les trois dans le modèle MVC :

MVC est une idée de conception, et il n'a pas une norme unifiée, l'une des implémentations typiques des idées MVC est JavaBean (mode) + jsp (vue) + servlet (contrôleur), et j'aime lister la logique métier dans JavaBean séparément pour former service (mode) + JavaBean (ensemble de données ) ) + structure jsp (vue) + servlet (contrôleur), implémentons-la ci-dessous.

Implémentation MVC

Ici, je vais appliquer le modèle de conception MVC pour réaliser que l'utilisateur saisit un morceau de texte au premier plan, et obtient et épisse la chaîne dans l'arrière-plan "——ysy" puis renvoie une application simple affichée au premier plan. L'effet spécifique est tel qu'indiqué sur la figure :

Voir le calque .

 <%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
    <form action="./test.do" method="post">
    输入你想说的话~
        <input type="text" name="input"/>
        <input type="submit" value="提交" />
        <br/>
        <%
        String s = (String)request.getAttribute("outPut");    <!--从request域中获取结果-->
        if(s != null){                          <!--如果有结果,显示结果-->
        %>
            <%=s %>
        <%
        }
        %>
    </form>
</body>
</html>

2. Couche de contrôle

Écriture de la servlet :

 package servlet;

import java.io.IOException;
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 bean.TestBean;
import service.TestService;

@WebServlet("/test.do")                                    //通过注释配置servlet
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public TestServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");                      //设置字符集,防止中文乱码

        TestBean testBean = new TestBean();                        //获取数据集对象
        TestService testService = new TestService();                  //获取业务层对象

        String s =request.getParameter("input");                    //获取视图层提交的数据

        testBean.setInput(s);                                //将数据存入数据集中
        s = testService.change(testBean);                         //调用业务层,传入数据,接收返回结果
        request.setAttribute("outPut", s);                        //将结果存入request域中
        request.getRequestDispatcher("test.jsp").forward(request, response);    //跳转到视图层
    }

}

Si vous ne le faites pas Si vous ne souhaitez pas utiliser de commentaires pour configurer le servlet, vous pouvez également le configurer via web.xml :

930406f08da8ee4a2ff134b688d29d1d
33f811d908019104dce50f37c23d195d
  104ce0f86471f18553dacb332199720eJava_Web6016cc98de5b53c0cfd1cdb1cf6f5e32
  145f58f625840b9ea02ee646738753d6
    4dc738b987c616c936501769be741a6eindex.html61b13b5331cf95fd092fcea0d23c370c
    4dc738b987c616c936501769be741a6eindex.htm61b13b5331cf95fd092fcea0d23c370c
    4dc738b987c616c936501769be741a6eindex.jsp61b13b5331cf95fd092fcea0d23c370c
    4dc738b987c616c936501769be741a6edefault.html61b13b5331cf95fd092fcea0d23c370c
    4dc738b987c616c936501769be741a6edefault.htm61b13b5331cf95fd092fcea0d23c370c
    4dc738b987c616c936501769be741a6edefault.jsp61b13b5331cf95fd092fcea0d23c370c
  300e6fadd23fafd1b065a779b865fda9

  46309ed845064fdb06e746051efff9e0                                           //通过配置文件配置servlet
    700b5f17c4d842e4bd410f680f40946btest72eca723e64ddd01187c8b4d58572fcb
    b472d9135dbff3dd7fcc77f5995c97d0servlet.TestServlet4f01b97d64aea37f699ead4eb7bd2bbd
  20d42bb762ac7d7e594da3a264e47fcc
  870ae7edaa11700bcea972d006efb06e
    700b5f17c4d842e4bd410f680f40946btest72eca723e64ddd01187c8b4d58572fcb
    66e1775cbd9d5002635ae3285442ba88/test.do3ec4a5583206d351b61ed79c1a0f9c66
  cb808b0e21d3ee32c89fe10adc3f12ec

9ec23d40699efb4cb39a61797a06a5a1

Ensemble de données

package bean;

public class TestBean {
    private String input;

    public String getInput() {
        return input;
    }

    public void setInput(String input) {
        this.input = input;
    }

}

package service;

import bean.TestBean;

public class TestService {
    public String change(TestBean testBean) {

        String s = testBean.getInput();        //从数据集中获取数据

        if(s != null && s != "") {          //如果有数据,则拼接字符串
            s += "——ysy";
        }
        return s;
    }
}
<.>4. Couche métier

rrreee

3.Avantages du modèle de framework MVC

 1. Propice à la réutilisation du code

 2. Propice aux développeurs Division du travail

3. Il est utile de réduire le couplage entre les modules du programme et de faciliter la maintenance et l'expansion du programme. Pour plus de connaissances connexes, veuillez visiter la colonne

FAQ !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn