Abkürzung für Modell, Ansicht, Controller-Modell, das für "Verarbeitung", "Ergebnisanzeige" bzw. "Überwachung" zuständig ist. Die Steuerung empfängt die Anforderung auf der Benutzerseite, die Steuerung fordert das Modell auf, die Daten zu verarbeiten, das Modell gibt die verarbeiteten Daten an die Steuerung zurück, die Daten werden an die Ansicht übergeben, die Ansicht wird geformt und als Antwort an den Benutzer zurückgegeben und so weiter. werden.
In einer Servlet / JSP-Umgebung wird der Controller häufig von der Servlet-Klasse ausgeführt, die Ansicht wird von der JSP ausgeführt und das Modell wird häufig von einer normalen Java-Klasse ausgeführt. Einer der Vorteile davon ist, dass die Entwicklung geteilt werden kann, ohne dass Wissen erforderlich ist, das mehrere Bereiche umfasst.
Es gibt zwei Möglichkeiten, Seiten von einer Servlet-Klasse zu einer JSP oder einer anderen Servlet-Klasse zu wechseln: Weiterleiten und Umleiten. Die Weiterleitung ist schnell, anstatt sich nur innerhalb derselben Anwendung bewegen zu können, und die Adressleiste des Browsers enthält die Informationen des ersten Anforderungsziels. Andererseits ist die Umleitung langsam, anstatt auf Dateien und andere Anwendungen (andere Websites) zugreifen zu können, und die Informationen in der Adressleiste des Browsers werden ebenfalls geändert.
Die unter Webcontent / WEB-INF / gespeicherte JSP-Datei kann nicht als Reaktion auf Anweisungen des Browsers geöffnet werden. Sie kann daher verwendet werden, wenn Sie keine direkte Verknüpfung herstellen möchten. Aufgrund der Tatsache, dass es nicht möglich ist, direkt vom Browser aus zu öffnen, ist es auch möglich, von vorne anzuzeigen, aber nicht umzuleiten.
Selbst wenn Sie Weiterleiten oder Umleiten verwenden, können Sie Daten nicht so speichern oder senden, wie sie sind. Durch Speichern von Daten in einem Bereich, der als Bereich bezeichnet wird, können Daten zwischen Servlets und JSPs gemeinsam genutzt werden.
Es können nur Instanzen gespeichert werden -Es muss möglich sein, durch Implementierung von java.io.Serializable zu serialisieren ・ Die Klasse gehört zum Paket -Haben Sie einen Standardkonstruktor (Konstruktor ohne Argumente) in der Öffentlichkeit -Felder sollten gekapselt sein und stattdessen Getter / Setter haben, die Namenskonventionen folgen Wird in der Regel zum Teilen festgelegt.
Der Bereich ist je nach Speicherbereich in vier Bereiche unterteilt und wird als "Seitenbereich", "Anforderungsbereich", "Sitzungsbereich" bzw. "Anwendungsbereich" bezeichnet.
Der Bereich liegt nur innerhalb dieser Seite. Ich werde diesmal weglassen.
Der Bereich reicht von der Anfrage bis zur Antwort. Es kann für Webanwendungen verwendet werden, z. B. zum Anzeigen von Berechnungsergebnissen basierend auf Eingabedaten.
Der Bereich liegt zwischen den Sitzungen. Erforderlich, wenn der vorübergehend im Registrierungsformular usw. eingegebene Wert mehrmals verwendet wird.
Wird verwendet, wenn Daten verarbeitet werden, die vom gesamten Benutzer gemeinsam genutzt / referenziert werden, z. B. Abstimmungsschaltflächen. Wird verworfen, wenn die Anwendung geschlossen wird.
Sie können mit einer Methode speichern und abrufen, die für jeden Bereich einen gemeinsamen Namen und ein gemeinsames Argument in einer anderen Klasse hat.
** Speichermethode **
** Erfassungsmethode **
Zu verwendende Klasse: *** ServletRequest *** Klasse
Es gibt einige implizite Objekte in JSP, die als Variablen verwendet werden können, ohne sie explizit zu deklarieren, und die "aktuelle Anforderung", auf die der Typ * ServletRequest * verweist, ist *** request ***. Kann implizit behandelt werden.
Zu verwendende Klasse: *** HttpSession *** Klasse
Sowohl beim Speichern als auch beim Abrufen von Daten muss eine Instanz der "verwendeten Sitzung" abgerufen werden. Es kann mit * HttpServletRequest # getSession () * abgerufen werden und wird durch Einfügen in eine Referenzvariable vom Typ * HttpSession * behandelt. Hier gibt es auch ein implizites Objekt, und Sie können die "aktuell verwendete Sitzung" implizit mit *** session *** behandeln.
Um die Sitzungsbereiche mehrerer Personen gleichzeitig zu verwalten, muss die Sitzungs-ID zwischen der Client- und der Serverseite freigegeben und der Bereich und die Sitzungs-ID auf der Serverseite zugeordnet werden. In diesem Fall werden so viele Bereiche vorbereitet, wie Clients vorhanden sind, und es kann zu Speicherpannen kommen. Daher ist es erforderlich, den Inhalt des Bereichs und der Sitzung angemessen zu zerstören. Ein Beispiel ist das Sitzungszeitlimit, bei dem Sitzungen verworfen werden, die für einen bestimmten Zeitraum nicht als Ziele für die Speicherbereinigung verwendet wurden.
Um es einfacher zu machen, einer kurzen Zeit der Anforderungskonzentration standzuhalten, wird außerdem eine Methode vorbereitet, die diese freiwillig verwirft und vom Entwickler angemessen angewendet werden muss.
Zu verwendende Klasse: *** ServletContext *** -Klasse
Wie beim Sitzungsbereich müssen Sie eine Instanz der "von Ihnen verwendeten Anwendung" abrufen. Das implizite Objekt davon wird mit dem Variablennamen *** application *** behandelt. Wenn Sie es als Methode erhalten möchten, können Sie es mit * HttpServlet # getServletContext () * abrufen.
Daten können im Anwendungsbereich als ein Bereich gespeichert werden, der allen Clients gemeinsam ist. Da die Daten jedoch nur vorübergehend auf der Serverseite verbleiben, wird der Bereich der Anwendung, der gleichzeitig mit dem Beenden des Servers beendet wurde, zerstört. Wenn Sie die Daten auch nach dem Neustart verarbeiten möchten, müssen Sie sie in Form einer Datei belassen.
Bereichstyp | Umfang anfordern | Sitzungsumfang | Anwendungsbereich |
---|---|---|---|
Anwendungsbereich | Bis die Anfrage beantwortet wird | Bis die Sitzung zerstört ist | Bis die Anwendung geschlossen ist |
Nutzungsklasse | ServletRequest | HttpSession | ServletContext |
Implizites Objekt der Klasse | request | session | application |
Hauptanwendungen | Eingabeformular | Anmeldeinformationen | Gemeinsame Daten |
Andere Vorsichtsmaßnahmen | Redirect gibt eine Antwort einmal zurück und kann nicht verwendet werden | Wenn sich Daten ansammeln, wird der Server belastet. Verwerfen Sie sie daher entsprechend. | Wenn Sie die Daten wiederverwenden möchten, geben Sie sie in eine Datei usw. aus. |
Recommended Posts