Zusätzlich zu Streben ist die Hauptkraft der Mainstream -Web -MVC -Frameworks an zweiter Stelle zu Spring MVC. Daher ist dies auch das Mainstream -Framework, das ein Programmierer beherrschen muss. Mit mehr Frameworks gibt es natürlich mehr Lösungen, die sich mit sich ändernden Anforderungen und Unternehmen umsetzen können. Wenn Sie jedoch Spring MVC flexibel verwenden möchten, um mit der meisten Webentwicklung umzugehen, müssen Sie seine Konfiguration und Prinzipien beherrschen.
1. Spring MVC -Umgebungskonstruktion: (Frühjahr 2.5.6 + Hibernate 3.2.0)
1. Einführung des JAR -Pakets
Spring 2.5.6: Spring.Jar, Spring-Webmvc.jar, Commons-Logging.jar, Cglib-Nodep-2.1_3.jar
Hibernate 3.6.8: Hibernate3.jar, Hibernate-jpa-2.0-api-1.0.1.Final.jar, Antlr-2.7.6.Jar, Commons-Collections-3.1, Dom4j-1.6.1.Jar, Javassist-32.0.ga.jar, Jta-1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1. SLF4J-NOP-1.6.4.jar, Treiber-JAR-Paket für entsprechende Datenbanken
SpringMVC ist ein MVC -Framework, das auf DispatcherServlet basiert. Das erste, was auf jede Anfrage zugreift, ist das DispatcherServlet. Der DispatcherServlet ist für die Weiterleitung jeder Anforderung an den entsprechenden Handler verantwortlich. Nachdem der Handler es verarbeitet hat, gibt es die entsprechende Ansicht (Ansicht) und Modell (Modell) zurück. Die zurückgegebene Ansicht und das Modell können nicht angegeben werden, dh Sie können das Modell nur zurückgeben oder nur die Ansicht zurückgeben oder nicht.
DispatcherServlet wird von httpServlet geerbt. Da SpringMVC auf DispatcherServlet basiert, konfigurieren wir zunächst den DispatcherServlet, damit er den Inhalt verwalten kann, den er verwalten soll. Das HttpServlet wird in der Datei web.xml deklariert.
<!-Spring MVC-Konfiguration-> <!-===============================================================================-> <servlet> <Servlet-name> Spring </servlet-name> <servlet-classe> org.springframework.web.servlet.DispatcherServlet </Servlet-Klasse> <! Die Standardeinstellung befindet sich im Web-Inf-Verzeichnis, und der Name ist [<Servlet-name>]-Servlet.xml wie Spring-Service.xml <init-param> <param-name> contextconfigLocation </param-name> <param-value> /web-inf/spring-servlet.xml </param-valuue> 默认 </默认 </默认 </init-param> init-servlet.xml </param-valuue> 默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认 </默认)--> Initring. <Load-on-Startups> 1 </Load-on-Startup> </Servlet> <Servlet-Mapping> <Servlet-name> Spring </Servlet-name> <url-pattern>*. -> <hörer> <HörerClass> org.springframework.web.context.contextloaderListener </Listener-Klasse> </listener> <!-Gibt das Verzeichnis an, in dem sich die Konfigurationsdatei der Spring-Bean befindet. Die Standardkonfiguration befindet sich im Web-INF-Verzeichnis-> <context-Param> <param-name> contextconfigLocation </param-name> <param-value> classPath: config/applicationContext.xml </param-value> </context-param>
FRINDE-SERVLET.XML-Konfiguration
Der Name Spring-Servlet liegt daran, dass der Wert, der mit dem <Servlet-Name> -Tag in web.xml oben übereinstimmt, Spring (<Servlet-name> Spring </Servlet-name>) und der Dateiname von Spring-Service. Wenn es in SpringMVC geändert wird, ist der entsprechende Dateiname springmvc-servlet.xml.
<? xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http://www.spingframework.org/schema http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.g/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframe.org/schema/tx http://www.springframe.org/schema/tx/sping-tx-3.0.org/schema/tx/sping-tx-3.0..0.org/schema/sping-tx-3.0.0.0.org/schema/ http://www.springframework.org/schema/context <a href = "http://www.springframework.org/schema/context/spring-context-3.0.xsd"> http://www.spingframework.org/schema/context/spring-context-3.xsd </aphema "> <!-Enabl-Context-3. <Kontext: Annotation-config /> <!-Setzen Sie das JAR-Paket, in dem die Klasse mit der Annotation befindet-> <Kontext: Komponenten-scan-Basis-Package = "Controller"> < /context: Komponenten-scan> <!-Vervollständigen Sie die Zuordnung von Anforderungs- und Annotations-POJOs-> <Bean /> <!-Path-Lösung der Abendungsseite. Präfix: Präfix, Suffix: Suffix -> <bean p: prefix = "/jsp/" p: suffix = ". jsp"/> </beans>
Dispatcherservlet verwendet einige spezielle Bohnen, um Anforderungsanforderungen zu bearbeiten und entsprechende Ansichtsrenditen zu generieren.
In Bezug auf die Rückgabe einer Ansicht ist der Controller nur dafür verantwortlich, einen Wert zurückzugeben, und welche Ansicht wird zurückgegeben. Es wird durch den Ansichtsparser kontrolliert. Der häufig verwendete Ansichtsparser in JSP ist InternalResourceViewresovler, für das ein Präfix und ein Suffix erforderlich sind.
Wenn der obige Ansicht Parser, wenn der Controller Blog/Index zurückgibt, ist die Ansicht, die durch den Ansicht Parser analysiert ist, /jsp/blog/index.jsp.
Hauptsächlich über Controller sprechen.
Eine Klasse, die @Controller zum Markieren verwendet, ist der Controller
Paketcontroller; import Javax.servlet.http.httpServletRequest; import org.springframework.stereotype.Controller; // ActionPublic Class TestController Ähnlich wie bei Struts 'Action-Mapping {@RequestMapping ("test/login.do") // URL-Adress-Mapping anfordern, ähnlich wie bei Struts' Action-Mapping Public String TESTLOGIN (@Requestparam (value = "username") String username, String-Passwort, HTTPERVLEFRETRETRETRETRETRETRETRET, | Parameter, die in der Anforderungs -URL -Adresskarte enthalten sein müssen (es sei denn, das Attribut erfordert = false) // @RequestParam können abgekürzt werden wie: @RequestParam ("Benutzername") if (! "adminale" .Eequals (Benutzername) ||! " // springen Sie den Seitenpfad (Standardweiterung), der das in der Feder-Service-Konfigurationsdatei konfigurierte Präfix und Suffix nicht enthalten muss.} Return "loginuccess"; } @RequestMapping ("/test/login2.do") public modelAndView testlogin2 (String -Benutzername, String -Kennwort, int Alter) {// Anfrage und Antwort müssen nicht in der Methode angezeigt werden. Wenn Sie es nicht verwenden können, können Sie es entfernen // Der Name des Parameters entspricht dem Namen der Seitensteuerung, und der Parametertyp wird automatisch konvertiert, wenn (! "Admin" .equals (Benutzername) ||! "Admin" .equals (Passwort) || Alter <5) {neuer Modell und "loginError"); // MODELAndView manuell instanziiert, um die Seite (vorwärts) zu vervollständigen, entspricht der Effekt der obigen Methode, um die Zeichenfolge zurückzugeben. // Seite umleiten, indem es umgeleitet wird // Es gibt auch eine einfache Möglichkeit, die Umleitung zu schreiben // Neue ModellAndView zurückgeben ("Redirect: ../ index.jsp"); } @RequestMapping ("/test/login3.do") public modelAndView testlogin3 (Benutzerbenutzer) {// Die Parameter werden auch als Formularobjekte unterstützt, ähnlich wie bei der Actionform von Struts. Benutzer benötigt keine Konfiguration. Schreiben Sie einfach String ustusername = user.getUnername (). String password = user.getPassword (); int age = user.getage (); if (! "admin" .equals (Benutzername) ||! "adminal" .Equals (Passwort) || Alter <5) {Neue modelAndView zurückgeben ("loginError"); } Neue modelAndView zurückgeben ("loginuccess"); } @Resource (name = "loginService") // Die ID der Bean in applicationContext.xml abrufen, die sich loginService befindet, und private LoginService LoginService injizieren; // Äquivalent zur herkömmlichen Spring Injection -Methode zum Schreiben von GET und Setzen von Methoden. Dieser Vorteil ist prägnant und ordentlich, wobei unnötigen Code @RequestMapping ("/test/login4.do") public String testlogin4 (Benutzerbenutzer) {if (loginService.login (Benutzer) == False) {return "loginError"; } return "loginuccess"; }}Die obigen vier Methodenbeispiele sind ein Controller, der unterschiedliche Anforderungs -URLs enthält. Sie können auch einen URL -Zugriff verwenden, um verschiedene Zugriffsmethoden über die URL -Parameter zu unterscheiden. Der Code ist wie folgt:
Paketcontroller; import org.springframework.stereotype.Controller; Mit dem ControllerPublic Class testController2 {@RequestMapping public String testlogin (String -Benutzername, String -Passwort, int Alter) {// Wenn keine Parameter hinzugefügt werden, wird die Methode bei Anforderung standardmäßig ausgeführt, wenn /Test2/login.do if (! "adminaler" .Equals (username) || | | ||! } return "loginuccess"; } @RequestMapping (params = "method = 1", method = requestMethod.post) public String testlogin2 (String -Benutzername, String -Kennwort) {// Verschiedene Aufrufmethoden werden basierend auf dem Wert der Parameter -Parametemethode der Parameter (adminaler). "loginError"; } return "loginuccess"; } @RequestMapping (params = "method = 2") public String testlogin3 (String -Benutzername, String -Kennwort, int Alter) {if (! "Admin" .equals (ustername) ||! "Adminal" .equals (Passwort) || Alter <5) {return "loginError"; } return "loginuccess"; }}Tatsächlich kann RequestMapping als URL der übergeordneten Anforderung angesehen werden, während RequestMapping als URL für untergeordnete Anfrageanforderungs -URL für die Methode angesehen werden kann. Die ERL über Eltern und Kinderanfrage wird schließlich zusammengespleißt, um die URL der Seitenanforderung zu entsprechen. Daher kann RequestMapping auch so geschrieben werden:
package controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("/test3/*") // Parent request request urlpublic class TestController3 { @RequestMapping("login.do") // Child request request url, which is äquivalent zu } return "loginuccess"; }}Häufige Anmerkungen in SpringMVC umfassen @PathVariable, @RequestParam, @PathVariable mit dem Tag der Parameter der Methode. Die mit der IT markierten Parameter können mit dem Anforderungspfad übergeben werden. Siehe das folgende Beispiel
@RequestMapping (value = "/comment/{blogid}", method = requestMethod.post) public void Kommentar (Kommentar Kommentar,@pathVariable int blogid, httpSession Session, httpServletResponse -Antwort) löst IOException {} aus {} ausIn diesem Beispiel wird BlogID von @PathVariable als Anforderungspfadvariable markiert. Wenn die Anfrage /blog/Comment/1.do ist, bedeutet dies, dass der Wert von BlogID 1. beträgt. In ähnlicher Weise wird @RequestParam auch verwendet, um Werte an Parameter zu übergeben, aber sie nimmt den Wert aus dem Parameter der Anforderung von Anfang an, was der Anforderung entspricht.
In der Controller -Methode, wenn die Webelemente httpServletRequest, httpServletResponse und httpSession erforderlich sind, müssen Sie der Methode nur einen entsprechenden Parameter angeben, dann übergibt SpringMVC den Wert beim Zugriff automatisch an ihn. Es ist jedoch zu beachten, dass wenn die Sitzung aufgerufen wird, wenn Sie zum ersten Mal auf das System zugreifen, ein Fehler gemeldet wird, da die Sitzung zu diesem Zeitpunkt nicht generiert wurde.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.