1 Einführung
Was ist ein MVC -Framework?
Der vollständige Name von MVC ist der Modellansicht-Controller, der die Abkürzung des Modell-View-Controller ist. Es ist ein Software -Design -Modell. Es organisiert Code mithilfe einer Trennmethode für Geschäftslogik, Daten und Schnittstellenanzeige und sammelt die Geschäftslogik in eine Komponente. Während die Schnittstelle und Benutzerinteraktion verbessert und personalisiert wird, müssen die Geschäftslogik nicht neu geschrieben werden. MVC wurde einzigartig entwickelt, um herkömmliche Eingabe-, Verarbeitungs- und Ausgabefunktionen in einer logischen grafischen Benutzeroberflächenstruktur zuzuordnen.
Modell-View-Controller (MVC) ist ein bekanntes Designmuster, das auf Design-Schnittstellenanwendungen basiert. Es entkoppelt hauptsächlich die Geschäftslogik von der Schnittstelle, indem die Rolle von Modellen, Ansichten und Controllern in Anwendungen getrennt wird. In der Regel ist das Modell für die Einkapselung von Anwendungsdaten in der Ansichtsschicht verantwortlich. Die Ansicht zeigt diese Daten nur an und enthält keine Geschäftslogik. Der Controller ist dafür verantwortlich, Anfragen von Benutzern zu empfangen und Hintergrunddienste (Manager oder DAO) zur Behandlung von Geschäftslogik zu erhalten. Nach der Verarbeitung kann die Hintergrundgeschäftsschicht einige Daten zurückgeben, die in der View -Ebene angezeigt werden sollen. Der Controller sammelt diese Daten und bereitet das in der Ansichtsschicht angezeigte Modell vor. Die Kernidee des MVC -Modells besteht darin, die Geschäftslogik von der Schnittstelle zu trennen und sie einzeln zu ändern, ohne sich gegenseitig zu beeinflussen.
In SpringMVC -Anwendungen besteht das Modell normalerweise aus Pojo -Objekten, die in der Geschäftsschicht verarbeitet und in der Persistenzschicht bestehen bleiben. Ansichten sind normalerweise JSP -Vorlagen in der JSP -Standard -Tag -Bibliothek (JSTL). Der Controller -Teil wird vom DispatcherServlet verwaltet, und wir werden in diesem Tutorial mehr darüber erfahren.
Einige Entwickler glauben, dass die Geschäftsschicht- und DAO -Schichtklassen Teil der MVC -Modellkomponenten sind. Ich habe verschiedene Meinungen dazu. Ich glaube nicht, dass die Geschäftsschicht und die DAO -Schichtklassen Teil des MVC -Frameworks sind. Normalerweise ist eine Webanwendung eine dreischichtige Architektur, nämlich die Datenversorgungsrepräsentation. MVC ist tatsächlich Teil der Präsentationsschicht.
Dispatcher Servlet (Federcontroller)
In der einfachsten Spring MVC -Anwendung ist der Controller das einzige Servlet, das Sie in der Beschreibung der Java -Webbereitstellung konfigurieren müssen (d. H. Die Datei web.xml). Feder MVC -Controller - allgemein als Dispatcher -Servlet bezeichnet, implementiert das Konstruktionsmuster des Front -End -Controllers. Und jede Webanforderung muss sie durchlaufen, damit sie den gesamten Anforderungslebenszyklus verwalten kann.
Wenn eine Webanforderung an eine Spring MVC -Anwendung gesendet wird, empfängt das Dispatcher Servlet zunächst die Anfrage. Anschließend organisiert es Komponenten, die im Kontext der Spring -Webanwendung konfiguriert sind (z. B. den tatsächlichen Anforderungsverarbeitungscontroller und Ansichtsreserve) oder die Annotationskonfiguration verwenden, von denen alle die Verarbeitung der Anforderung erfordern.
Definieren Sie eine Controller -Klasse im Frühjahr 3.0, der mit der @Controller -Annotation gekennzeichnet sein muss. Wenn ein Controller mit @Controller Annotation eine Anforderung erhält, wird nach einer geeigneten Handler -Methode für die Anforderung gesucht. Dadurch muss der Controller jede Anforderung der Handler -Methode über einen oder mehrere Handler -Zuordnungen abbilden. Dazu müssen Methoden einer Controller -Klasse mit @RequestMapp -Annotation dekoriert werden, um sie Handler -Methoden zu machen.
Nachdem die Handler -Methode die Anforderung verarbeitet hat, delegiert sie die Steuerung an eine Ansicht mit demselben Ansichtsnamen wie der Rückgabewert der Handlermethode. Um eine flexible Methode bereitzustellen, repräsentiert der Rückgabewert einer Handler -Methode nicht die Implementierung einer Ansicht, sondern eine logische Ansicht, d. H. Es gibt keine Dateierweiterung. Sie können diese logischen Ansichten der richtigen Implementierung zuordnen und diese Implementierungen in die Kontextdatei schreiben, damit Sie den Ansichtsschichtcode problemlos ändern können, ohne den Code zu ändern, der die Handlerklasse anfordert.
Es liegt in der Verantwortung des Ansichtsresolvers, der richtigen Datei für einen logischen Namen zu entsprechen. Sobald die Controller -Klasse einen Ansichtsnamen für eine Ansichtsimplementierung analysiert hat. Es macht das entsprechende Objekt gemäß dem von der Ansicht implementierten Design.
2 JAR -Paket importieren
Zumindest sollte es diese geben.
3 Konfigurationsdateien
3.1 web.xml
<? XSI: Schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app-app-app-app-app- = <Diagname> SpringMvc_Helloworld </Display-Name> <Welcome-File-List> <Welcome-File> Index.html </Welcome-File> <Welcome-File> INDEX <Welcome-File> default.jsp </Welcome-File> </Welcome-File-List> <!-Servlet für Spring MVC-> <!-Nach der Initialisierung sucht DispatcherServlet direkt nach SpringMVC-Service.xml-Datei unter/web-inf/. The parameter definition of the servlet-name tag should correspond to the XML file --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name> SpringMVC </Servlet-name> <URL-PUTTER>/</URL-PATTERN> </SERGLET-MAPPING> <CONEXT-Param> <param-name> contextconfigLocation </param-name> <param-value> classPath: applicationContext.xml </param-value> </context-Param> <hörer> </</context-Param> <hörer> </</</concusxt-Param> <hörer> </</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</text-path> <Hörer-Klasse> org.springframework.web.context.contextloaderListener </Listener-Klasse> </listener> </web-App>
3.2 SpringMvc-Service.xml
Der Name dieser Datei wird durch die in Web.xml konfigurierte <servlet-name> </servlet-name> des DispatcherServlet bestimmt. Der Pfad befindet sich im Kontext/Web-Inf/, der hauptsächlich die entsprechende Beziehung zwischen dem Namen der logischen Ansicht und der vom Controller zurückgegebenen physischen Ansicht konfiguriert.
<? xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.spingframework.org/schema/tx" xmlns: context = "http://wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww. XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/Spring-apring-- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <!-automatisch gesaugt. id = "viewResolver"> <Eigenschaft name = "viewClass" value = "org.springFramework.web.servlet.view.jstlview" /> <!-Controller gibt einen logischen Ansichtsnamen nach Pre-Suffix-Verarbeitung zurück, um zum physischen Ansicht zurückzukehren-> <Eigentumsname = "Suffix". </bean> </beans>
4 Schreiben Sie eine Domänenklasse
Wird verwendet, um einige Einreichungsdaten zu verkörpern
package com.lin.helloworld.domain;public class HelloWorld {private String data;public HelloWorld() {super();}public HelloWorld(String data) {super();this.data = data;}public String getData() {return data;}public void setData(String data) {this.data = data;}@Override public String toString() {return "HelloWorld [data =" + data + "]";}} 5 Schreibcontroller
Dies ist der Controller in MVC. Was Struts2 unterscheidet, ist, dass es sich um einen Abschnitt auf Methodenebene handelt, und Struts2 ist ein Abschnitt auf Klassenebene.
Paket com.lin.helloworld.controller; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.modelattribute; org.springframework.web.servlet.ModelandView; import com.lin.helloworld.domain.Helloworld; @ControllerPublic Class des modelAndview -Konstruktors entsprechen einem Ergebnis in Struts2 NamemodelandView modelAndView = new modelAndview ("helloWorld", "msg", "helloWorld !!!); return modelandview;} // Rückgabe eines Objekts auf die Ansicht // modelattribute (" OBJ "). in ein Objekt // Der Unterschied zwischen hier und Struts2: // Struts2 übernimmt die Formulierung der Form: <Eingabe name = "obj.data" // Die eingereichten Daten werden in den Daten des OBJ -Objekts eingekapselt. @RequestMapping ("/helloObj") public modelAndView SayShelloworld (@modelattribute ("obj") helloWorld obj) {System.out.println (obj.toString ()); modelAndview modelandView = new modelAndview ("helloworld", "obj", "obj);6 Ansichten
<%@ page Language = "java" import = "java.util. "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>" rel = "external nofollow"> <title> my jsp 'HellOWorld.jsp' Startseite </title> <meta http-äquiv = "contita", no-caTa> <meta http-äquiv = "contita", no-caTa> <meta http-äquiv = "contita", no-caTa> <meta http-äquiv = "contita", no-caTa> <meta http-äquiv = "contita" no-caTa "> <meta http-äquiv =" content. http-äquiv = "cache-control" content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv type = "text/css" href = "styles.css" rel = "external nofollow"> -> </head> <body> helloWorld! Dies ist ein Beispiel für das Frühlings-MVC-Framework. Name = "data" entspricht automatisch dem eingereichten Objekt -> <Eingabe type = "text" name = "data" size = "30"/> <br/> <Eingabe type = "value =" surenden "/> </form> <hr/> $ {obj.data} </body> </html> $7 Verzeichnisstruktur
Zusammenfassen
Das obige dreht sich alles um das Beispiel für das SpringMVC -Eintrag in diesem Artikel. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Seite verweisen:
Java -Programmierungsimplementierung von SpringMVC Simple Login Beispiel
Die SpringMVC -Programmierung verwendet die Controller -Schnittstelle, um den Controller -Instanzcode zu implementieren
Detaillierte Erläuterung, ob der SpringMVC Interceptor implementiert, die Überwachungssitzung ausgeht
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite.