[JAVA] Ein einfaches Beispiel für das MVC-Modell

Grundsätzlich folgt es dem BMI-Berechnungsprogramm ** in Kapitel 7 der Einführung in Servlet & jsp, das klar verständlich ist.

Was ist ein MVC-Modell?

Element Rolle Datei
Model Führt die Hauptverarbeitung der Anwendung und Speicherung von Daten durch Allgemeine Klasse
View Zeigen Sie dem Benutzer den Bildschirm an JSP-Datei
Controller Empfängt eine Anforderung vom Benutzer, fordert das Modell auf, den Prozess auszuführen, und fordert die Ansicht auf, das Ergebnis anzuzeigen. Servlet-Klasse

javaBeams Einer der Bereiche, in denen Instanzen gespeichert werden können. Es gibt die folgenden Regeln.

  1. Kann serialisiert werden
  2. Die Klasse ist öffentlich und gehört zum Paket
  3. Hat einen öffentlichen Konstruktor ohne Argumente
  4. Das Feld ist gekapselt
  5. Haben Sie einen Getter / Setter, der der Namenskonvention folgt

Beispielprogramm

Ich werde jederzeit einen Kommentar für jeden Code abgeben.

Model Führt die Hauptverarbeitung der Anwendung und Speicherung von Daten durch Im Modellpaket gespeichert.

Health.java


package model;

import java.io.Serializable;

public class Health implements Serializable {
  private double height, weight, bmi;
  private String bodyType;

  public double getHeight() {
    return height;
  }

  public void setHeight(Double height) {
    this.height = height;
  }

  public double getWeight() {
    return weight;
  }

  public void setWeight(Double weight) {
    this.weight = weight;
  }

  public void setBmi(Double bmi) {
    this.bmi = bmi;
  }

  public double getBmi() {
    return this.bmi;
  }

  public void setBodyType(String bodyType) {
    this.bodyType = bodyType;
  }

  public String getBodyType() {
    return this.bodyType;
  }
}

Dieser Code ist die sogenannte JavaBeans.

HealthCheckLogic.java


package model;

public class HealthCheckLogic {
  public void execute(Health health) {
    //BMI berechnen und einstellen
    double weight = health.getWeight();
    double height = health.getHeight();
    double bmi = weight / (height / 100.0 * height / 100.0);
    health.setBmi(bmi);

    //Wird durch Beurteilen des Körpers anhand des BMI-Index festgelegt
    String bodyType;
    if (bmi < 18.5) {
      bodyType = "Dünner Typ";
    } else if (bmi < 25) {
      bodyType = "gewöhnlich";
    } else {
      bodyType = "Fettleibigkeit";
    }
    health.setBodyType(bodyType);
  }
}

Nichts Besonderes zu schreiben.

Controller Es empfängt eine Anforderung vom Benutzer, fordert das Modell auf, den Prozess auszuführen, und fordert die Ansicht auf, das Ergebnis anzuzeigen. Im Servlet-Paket gespeichert.

HealthCheck.java


package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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 model.Health;
import model.HealthCheckLogic;

@WebServlet("/HealthCheck")
public class HealthCheck extends HttpServlet {
  private static final long serialVersionUID = 1L;

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

    //nach vorne
    RequestDispatcher dispatcher =
        request.getRequestDispatcher
            ("/WEB-INF/jsp/healthCheck.jsp");
    dispatcher.forward(request, response);
  }

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

    //Anforderungsparameter abrufen
    String weight = request.getParameter("weight"); //Höhe
    String height = request.getParameter("height"); //Körpergewicht

    //Setzen Sie den Eingabewert auf Eigenschaft
    Health health = new Health();
    health.setHeight(Double.parseDouble(height));
    health.setWeight(Double.parseDouble(weight));
    //Führen Sie eine Integritätsprüfung durch und legen Sie das Ergebnis fest
    HealthCheckLogic healthCheckLogic = new HealthCheckLogic();
    healthCheckLogic.execute(health);

    //Speichern, um den Bereich anzufordern
    request.setAttribute("health", health);

    //nach vorne
    RequestDispatcher dispatcher =
        request.getRequestDispatcher
            ("/WEB-INF/jsp/healthCheckResult.jsp");
    dispatcher.forward(request, response);
  }
}

URL-Muster

Beschrieben in "@WebServlet (" / HealthCheck ")".

serialVersionUID private static final long serialVersionUID = 1L; fühlt sich wie eine Art Magie an, ist aber anders. Erforderlich bei der Serialisierung, dh beim Importieren von java.io.Serializable. Wird als Versionskontrolle für die Serializable-Klasse verwendet.

Umfang anfordern

Der für jede Anforderung generierte Bereich. Es wird möglich, eine Instanz zwischen dem Weiterleitungsziel und der Weiterleitungsquelle gemeinsam zu nutzen.

request.setAttribute("Attributname",Beispiel)

Geben Sie unter ** Attributname ** den Verwaltungsnamen der Instanz an, die im Bereich gespeichert werden soll. Geben Sie die Instanz an, die in ** Instanz ** gespeichert werden soll

Beschreiben Sie Folgendes, wenn Sie eine Instanz aus dem Anforderungsbereich abrufen. Dieses Mal wird healthCheckResult.jsp für diesen Prozess verwendet.

Geben Sie den Namen der abzurufenden Instanz ein= (Art der zu erhaltenden Instanz)request.getAttribute("Attributname")

Beachten Sie, dass eine Besetzung erforderlich ist

nach vorne

Mit Forward ist es möglich, die Verarbeitung in eine andere Servlet-Klasse oder JSP-Datei zu verschieben.

RequestDispatcher dispatcher =
request.getRequestDispatcher
    ("Ziel weiterleiten");
dispatcher.forward(request, response);

So legen Sie das Weiterleitungsziel fest JSP-Datei → / Pfad von WebContent Servlet-Klasse → / URL-Muster

View Zeigen Sie dem Benutzer den Bildschirm an. Speichern Sie hier in / WebContent / Web-INF / jsp.

healthCheck.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Erfrischender Gesundheitscheck</title>
</head>
<body>
<h1>Erfrischender Gesundheitscheck</h1>
<form action="/example/HealthCheck" method="post">
Höhe:<input type="text" name="height">(cm)<br>
Körpergewicht:<input type="text" name="weight">(kg)<br>
<input type="submit" value="Diagnose">
</form>
</body>
</html>

Zeile 10 <form action =" / example / HealthCheck "method =" post "> Das Aktionsattribut wird wie folgt angegeben. Für Servlet-Klasse → / Anwendungsname / URL-Muster Für JSP-Dateien → / Anwendungsname / Pfad von WebContent

healthCheckResult.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="model.Health" %>
<%
//Gesundheit im Anforderungsbereich speichern
Health health = (Health) request.getAttribute("health");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Erfrischender Gesundheitscheck</title>
</head>
<body>
<h1>Aktualisieren der Ergebnisse der Gesundheitsprüfung</h1>
<p>
Höhe:<%= health.getHeight() %><br>
Körpergewicht:<%= health.getWeight() %><br>
BMI:<%= health.getBmi() %><br>
Körperbau:<%= health.getBodyType() %>
</p>
<a href="/example/HealthCheck">Rückkehr</a>
</body>
</html>

In der zweiten Zeile "<% @ page import =" model.Health "%>" wird Health.class im Modellpaket aufgerufen. Dieser Code kann eine gute Möglichkeit sein, die Verwendung von JavaBeans zu verstehen.

Schließlich

Weitere Informationen finden Sie unter ** Einführung in Servlet & JSP, die aktualisiert wird ** (geschrieben von Daigo Kunimoto). Das Copyright des Quellcodes dieses Artikels liegt bei Flarelink Co., Ltd. Ich verwende Creative Commons BY-SA 4.0 entsprechend.

Recommended Posts

Ein einfaches Beispiel für das MVC-Modell
Ein einfaches Beispiel für ein Servlet, das Japanisch anzeigt
[Hinweis] Einfache Zusammenfassung des MVC-Modells
MVC-Modell
Ein Beispiel für einen FactoryBot-Fehler [KeyError: Factory nicht registriert: "Benutzer"]
[MVC-Modell] Ein Memo, das ein Anfänger MVC gelernt hat
Ein einfaches Beispiel für ArBiMap (Zwei-Wege-Karte)
Von enum vor dem Schmied festgefahren
Eine Sammlung einfacher Fragen für Java-Anfänger
Erstellen Sie einen Service mit einem leeren Modell Liferay 7.0 / DXP
[Bedeutung des Modells: von form_with]
Beispiel für die Verwendung von vue.config.js
Was ist ein MVC-Modell?
Hat die Serverseite des Online-Kartenspiels gemacht ⑤
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich möchte ein bestimmtes Modell von ActiveRecord ReadOnly erstellen
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Ich habe die Serverseite des Online-Kartenspiels gemacht made
Lassen Sie uns die interne Darstellung einer Gleitkommazahl erhalten
JSP-Informationen zum MVC-Modell des Servlets, zur Umleitung / Weiterleitung und zum Gültigkeitsbereich
Ich habe mit Spring Boot ein einfaches MVC-Beispielsystem erstellt
Vorhandene Datensätze verschwinden beim Erstellen des has_one-Modells (Rails).