Einfaches Sprungthema
Ich persönlich empfehle, den Bauprozess erneut zu praktizieren. Wenn Sie sich problematisch fühlen, können Sie das vorherige Projekt direkt kopieren, müssen jedoch einige Informationen in pom.xml ändern.
<gruppe> com.hanpang.springMvc </gruppeId> <artifactId> SpringMVC-Demo01 </artifactId> <version> 0.0.1-Snapshot </Version>
1. Kernkonfigurationsklassen und Ladeklassen
Paket com.hanpang.config; import org.springframework.context.annotation.comPonentscan; import org.springframework.context.annotation.configuration; Import org.springframework.web.servlet.config.annotation.enablewebmvc;@configuration@enableWebmvc@componentscan (Basepackages = "com.hanpang. **. Web") Public Class Webconfig {} Paket com.hanpang.config; import org.springframework {Webconfig.class}; } @Override Protected Class <?> [] GetServletConfigClasses () {return null; } @Override Protected String [] getServletMappings () {return New String [] {"/"}; }}2. Javaweb Stage Jump -Methode
Bitte beachten Sie die formalen Parameter in der SpringMVC -Methode, das Framework vervollständigt den Instanziationsvorgang für uns.
Paket com.hanpang.web; import java.io.ioxception; import javax.servlet.servletException; import javax.servlet.http.httpserSequest; importieren javax.servlet.http.httpletresponse; org.springframework.web.bind.annotation.RequestMapping; Import org.springframework.web.servlet.ModelandView; @Controller // Sagen Sie es, dass es sich um ein Controller öffentlicher Klassen -Demo01Controller {@RequestMaping (Path. (HttpServletRequest -Anforderung, HttpServletResponse -Antwort) löst ServletException aus, ioException {System.out.println ("Die formalen Parameter werden standardmäßig instanziiert"); request.getRequestDispatcher ("/web-inf/jsp/Demo01.jsp"). Forward (Request, Antwort); null zurückkehren; } @RequestMapping (path = "/test02") public modelAndView traditioneller Weg Jump_redirect (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst IOException aus {System.out.println ("Die formalen Parameter werden momentan sofort so instanziiert"); response.sendredirect (request.getContextPath ()+"/view/result01.jsp"); null zurückkehren; }} Hinweis: Wir verwenden diese Methode fast nicht mehr, nur eine einfache Demonstration und Überprüfung. Zumindest können wir diese Methode verwenden, um die Servlet -API zu erhalten !!!
3.. Zeigen Sie, wie Controller zu JSP springt
Am Ende des Beispiels werden wir den JSP View -Parser hinzufügen. Zu Beginn werden wir weiterhin der traditionellen Methode folgen und einen Schritt-für-Schritt-Prozess durchführen.
Paket com.hanpang.web; import java.io.ioxception; import javax.servlet.servletException; import javax.servlet.http.httpserSequest; importieren javax.servlet.http.httpletresponse; org.springframework.web.bind.annotation.requestmapping; import org.springframework mav = new ModelAndView (); mav.setViewName ("/webinf/jsp/Demo01.jsp"); MAV zurückgeben; } @RequestMapping (path = "/test04") public modelAndView Setzen Sie die Redirection -Methode () {modelAndView mav = new modelAndView (); mav.setViewName ("redirect: /view/result01.jsp"); // oder //mav.setviewName(urlbasedViewResolver.redirect_url_prefix+"/view/result01.jsp "); MAV zurückgeben; }} Es fühlt sich wie die Java -Webbühnenmethode an, aber während der Umleitung wird ein einfaches Präfix eingestellt.
4.. Zeigen Sie, wie Controller zum Controller springt
Ähnlich wie bei einem Anrufen von einem Servlet zum anderen
Paket com.hanpang.web; import java.io.ioxception; import javax.servlet.servletException; import javax.servlet.http.httpserSequest; importieren javax.servlet.http.httpletresponse; org.springframework.web.bind.annotation.requestmapping; import org.springframework ModelAndView (); mav.setViewName ("/test03"); MAV zurückgeben; } @RequestMapping (path = "/test06") public modelAndView set redirection () {modelAndView mav = new ModelAndView (); mav.setViewName ("redirect:/test04"); MAV zurückgeben; }} 5. Fügen Sie JSP View -Parser hinzu
Während der obigen Demonstration haben wir festgestellt, dass der SetViewName in modelAndView zum Abschluss des Sprung verwendet wird. Die hier übergebenen Daten sind eine Zeichenfolge, die Verarbeitungsmethode ist jedoch unterschiedlich. Wenn der Sprungpfad vorangestellt ist, ist die Verarbeitungsmethode unterschiedlich.
Wenn wir mehrere ähnliche Zeichenfolgen haben wie /web-inf/jsp/demo01.jsp, finden wir, dass es viele öffentliche Teile gibt. SpringMVC bietet uns eine Klasse, die sich auf die Behandlung von JSP -Seiten spezialisiert hat.
Bitte beachten Sie meine Beschreibung: Wenn Sie feststellen, dass die von Ihnen bestandene Zeichenfolge kein Präfix -Kenner hat, verwenden Sie standardmäßig den Konfiguration JSP View Parser, um sie zu verarbeiten und die Anforderungswesungsvorgang zu vervollständigen
Hinweis: Konfigurieren Sie die Kernkonfigurationsklasse
Paket com.hanpang.config; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.comPonentscan; org.springframework.web.servlet.config.annotation.enablewebmvc; import org.springframework.web.servlet.view.internalResourceViewresolver; Import org.springframework.web.servlet.view.jstlview;@configuration@enableWebmvc@componentscan (Basepackages = "com.hanpang. InterneResourceViewResolver (); JSPViewResolver.setViewClass (jstlView.class); // Springmvc unterstützt JSTL Tag jspviewResolver.setprefix ("/webinf/"); JSPViewResolver.setsuffix (". JSP"); return jspviewresolver; }} ** Hinweis: ** Bitte achten Sie auf die Annotation der Methode @Bean
Die Methode entspricht dem Code in XML wie folgt
<bean id = "jSpresourceViewResolver"> <Eigenschaft name = "prefix" value = "/web-inf/"/> <Eigenschaft name = "suffix" value = ". jsp"/> <Eigenschaft name = "viewClass" value = "org.springFramework.web.servlet.view.jstlview"/> </ban>
Verbesserung des Controller Jump JSP -Code
Dieser Ansichtsparser kann nur JSP -Anfragen weiterleiten und ist für Wiederleitungen ungültig. Bitte achten Sie auf den Kommentarinhalt des Codes
@RequestMapping (path = "/test03") public modelAndView standardmäßig wird weiterleitet () {modelAndView mav = new ModelAndView () angefordert; //mav.setviewName("/web-inf/jsp/demo01.jsp "); // Erweitert: Standardmäßig wird es mit dem JSP View Parser, // Präfix+"JSP/Demo01"+Suffix => /web-inf/jsp/demo01.jsp mav.setviewName ("JSP/Demo01") behandelt. // Ich habe festgestellt, dass die Zeichenfolge keine Präfix -Modifikation zurückgibt. } @RequestMapping (path = "/test04") public modelAndView Setzen Sie die Redirection -Methode () {modelAndView mav = new modelAndView (); // Der Parser macht die Umleitung mav.setviewName ("redirect: /view/result01.jsp") ungültig; MAV zurückgeben; } Verbesserung des Controller Jump Controller -Code
@RequestMapping (path = "/test05") public modelAndView legt den Mapping path () {modelAndView mav = new modelAndView () direkt fest; mav.setViewName ("/test03"); MAV zurückgeben;}Testen Sie nach dem Konfigurieren des JSP -Ansichtsparsers den obigen Code erneut und sehen Sie die Zugriffsergebnisse mit Überraschung.
Es entspricht dem, was wir vor "/test03" gesagt haben, ist eine Zeichenfolge, die standardmäßig mit dem JSP View -Parser verarbeitet wird. Wie kann man es also verbessern?
Sie können das Präfix "Vorwärts:" festlegen und der Code wird wie folgt verbessert:
@RequestMapping (path = "/test05") public modelAndView legt den Mapping path () {modelAndView mav = new modelAndView () direkt fest; mav.setViewName ("vorwärts:/test03"); // oder //mav.setviewName(urlbasedViewResolver.forward_url_prefix+"/test03 "); MAV zurückgeben;} Wenn festgestellt wird, dass die Zeichenfolge mit Vorwärts geändert wird:, ändert sich die Verarbeitungssituation, um sich von der Controller -Anforderung in einen anderen Controller zu konvertieren. Wenn die Umleitung durchgeführt wird, lautet der Code wie folgt:
@RequestMapping (path = "/test06") public modelAndView set redirect () {modelAndView mav = new ModelAndView (); mav.setViewName ("redirect:/test04"); MAV zurückgeben;} 6.InternalResourceViewResolver Anhang
INTERSURRESOURCEVIEWRESOLVER: Es handelt sich um eine Unterklasse von URLBasedViewResolver. Daher unterstützt es alle Funktionen, die von urlBasedViewresolver unterstützt werden.
In praktischen Anwendungen ist InternalResourceViewResolver auch der am häufigsten verwendete Ansichtsreserve. Was sind also die einzigartigen Merkmale von InternalResourceViewResolver?
Aus wörtlicher Sicht können wir InternalResourceViewResolver als interne Ressourcenansicht -Resolver interpretieren. Dies ist ein Merkmal von InternalResourceViewResolver.
InternalResourceViewResolver wird die zurückgegebenen Ansichtsnamen in InternalResourceView -Objekte auflösen. InternalResourceView speichert die von der Controller Processor -Methode zurückgegebenen Modellattribute in den entsprechenden Attributen und leiten Sie die Anforderung dann über RequestDispatcher an die Ziel -URL auf der Serverseite weiter.
In InternalResourceViewResolver ist beispielsweise Präfix =/web-inf/, Suffix = .jsp in InternalResourceViewResolver definiert, und der von der angeforderte Controller-Prozessormethode zurückgegebene Ansichtsname wird der Test getestet. Zu diesem Zeitpunkt wird InternalResourceViewResolver den Test in ein InternalResourceView-Objekt analysieren, zuerst die zurückgegebenen Modellattribute in das entsprechende httpServletRequest-Attribut speichern und dann RequestDispatcher verwenden, um die Anforderung an /Web-Inf/Test.jsp auf der Serverseite weiterzuleiten. Dies ist ein sehr wichtiges Merkmal von InternalResourceViewResolver. Wir alle wissen, dass der Inhalt, der in / web-inf / nicht direkt über Anforderungsanforderung gespeichert werden kann. Aus Sicherheitsgründen platzieren wir normalerweise die JSP-Datei in das Web-Inf-Verzeichnis und die Art und Weise, wie InternalResourceView auf der Serverseite springt, kann dieses Problem gut lösen. Im Folgenden finden Sie eine Definition eines internenResourceViewResolvers. Gemäß dieser Definition wird InternalResourceViewResolver, wenn der Name der zurückgegebenen logischen Ansicht getestet wird, ein definiertes Präfix und ein Suffix hinzugefügt, "/web-inf/test.jsp" und dann als InternalResourceView-URL verwendet, um ein neues InternalResourceView-Objekt zu erstellen.
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.