1. Erste Schritte mit den Grundlagen der SpringMVC -Grundlagen, erstellen Sie ein HelloWorld -Programm
1. Importieren Sie zuerst das von SpringMVC benötigte JAR -Paket.
2. Fügen Sie die Konfiguration über SpringMVC in der Konfigurationsdatei web.xml hinzu
<!-Konfigurieren Sie die Einstellung von SpringMvcDispatcherServlet und konfigurieren Sie die Zuordnung-> <Servlet> <Servlet-Name> SpringMVC </Servlet-Name> <Servlet-Class> org.springFramework.Web.Servlet.DispatcherServlet </servlet-Class> <init-param> <param-name> <param-name> <param-name> <param> <param-name> </param> <param> <param-name> </param> <param-name> </param> <param> <param> <param> <param> <param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!-- <load-on-startup>1</load-on-startup> --> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
3. Fügen Sie die Konfigurationsdatei von SpringMVC-Service.xml unter SRC hinzu
<? xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/sping/sping/sping-context- http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd "> <!-Scan und das Subpaket-> <context: component-scan thatcant thatcant thathcant thatcaton thathcan. resource --> <mvc:default-servlet-handler /> <!-- if you use annotation you must configure following setting --> <mvc:annotation-driven /> <!-- configure the InternalResourceViewResolver --> <bean id="internalResourceViewResolver"> <!-- prefix--> <property name="prefix" value="/WEB-INF/jsp/" /> <!-Suffix-> <Eigenschaft name = "suffix" value = ". jsp"/> </bean> </beans>
4. Erstellen Sie einen Ordner namens JSP im Web-Inf-Ordner, um die JSP-Ansicht zu speichern. Erstellen Sie einen Hello.jsp und fügen Sie Ihrem Körper "Hallo Welt" hinzu.
5. Erstellen Sie Paket und Controller, wie unten gezeigt
6. Controller -Code schreiben
@Controller @RequestMapping ("/mvc") öffentliche Klasse MVCCONTROLLER {@RequestMapping ("/hello") public String hello () {return "hello"; }}7. Starten Sie den Server und geben Sie http: // localhost: 8080/Projektname/MVC/Hallo ein
1.DispatcherServlet
DispatcherServlet ist ein Vorkontroller, der in der Datei web.xml konfiguriert ist. Abfangen von passenden Anfragen. Das Servlet -Abschluss der Übereinstimmungsregeln muss von selbst definiert werden. Die abgefangenen Anforderungen werden gemäß den entsprechenden Verarbeitungsregeln an den Zielcontroller verteilt. Dies ist der erste Schritt bei der Konfiguration des Spring MVC.
2.InternalResourceViewResolver
Name Resolver anzeigen
3. Die obigen Anmerkungen
@Controller ist dafür verantwortlich, eine Bean im Frühjahrskontext zu registrieren
@RequestMapping Annotation gibt an, welche URL -Anfragen für den Controller bearbeitet werden können
@Regler
Verantwortlich für die Registrierung einer Bohne im Frühjahrskontext
@RequestMapping
Annotation gibt an, welche URL -Anfragen für den Controller bearbeitet werden können
@RequestBody
Diese Annotation wird verwendet, um einen Teil der Körperdaten der Anforderungsanforderung zu lesen, den vom System konfigurierten HTTPMessageConverter zu verwenden, um zu parsen
@Responsebody
Diese Annotation wird verwendet, um das von der Controller -Methode zurückgegebene Objekt in den Körperdatenbereich des Antwortobjekts zu schreiben, nachdem es in das entsprechende httpMessageConverter in das angegebene Format konvertiert wurde
@Modelattribute
Verwenden Sie @ModelATTRIBUTE Annotation zur Methode Definition: Spring MVC, bevor Sie die Zielverarbeitungsmethode aufrufen. Die Methode, die @ModelAttribute auf der Methodenebene kommentiert, wird eins nach dem anderen bezeichnet.
Verwenden Sie @ModelAttribute Annotation, bevor Sie den Methodeparameter eingeben: Sie können das Objekt aus dem impliziten Objekt abrufen, die Anforderungsparameter an das Objekt binden und dann die Methode in das Parameterobjekt übergeben, um die Methode in das Modell hinzuzufügen.
@Requestparam
Verwenden Sie @RequestParam, um die Anforderungsparameter an die Anforderungsmethode zu übergeben
@PathVariable
Binden Sie den URL -Platzhalter an den Eingaberameter
@ExceptionHandler
Bei der Methode wird die Methode ausgeführt, wenn eine Ausnahme eintritt
@ControllerAdvice
Machen Sie einen Controller zu einer globalen Ausnahmeregelung. Die mit der @ExceptionHandler -Methode in der Klasse kommetierte Methode kann alle Ausnahmen verarbeiten, die in Controllern auftreten.
// automatisch übereinstimmen @RequestMapping ("/person") public String toperson (String -Name, Doppelalter) {System.out.println (Name+""+Alter); zurück "Hallo"; }1. Schreiben Sie einer Person Entity -Klasse
Paket test.springMvc.model; public class Person {public String getName () {return name; } public void setName (String -Name) {this.name = name; } public int getage () {return ay; } public void setage (int age) {this.age = älter; } privater Zeichenfolge Name; privates int Alter; }2. Schreiben Sie Methoden in Controller
// automatisch Boxen @RequestMapping ("/person1") public String toperson (Person p) {System.out.println (p.getName ()+""+p.getage ()); zurück "Hallo"; } // Der Parameter wurde in Initbinder @RequestMapping ("/Datum") public String Datum (Datum) {System.out.println (Datum) konvertiert; zurück "Hallo"; } // Zum Zeitpunkt der Initialisierung den Typ "String" in "Datum" @initbinder public void initbinder (ServletRequestDatabinder Binder) {binder.registerCustomeditor (Datum.Class, neuer CustomDateEditor (New SimpleDateFormat ("yyyy-mm-ddd"), wahr),) konvertieren; } // die Parameter an Front-End @RequestMapping ("/show") public String showperson (map <String, Objekt> Karte) {Person p = new Person () übergeben; map.put ("p", p); P.Setage (20); P.SetName ("Jayjay"); zurück "show"; }Die Rezeption kann "P" in der Anforderungsdomäne erhalten
// Die Parameter mit Ajax @RequestMapping ("/getPerson") public void getPerson (String-Name, Printwriter pw) {pw.write ("Hallo,"+Name) übergeben; } @RequestMapping ("/name") public String sayshello () {return "name"; }Die Rezeption ruft es mit dem folgenden JQuery -Code auf
$ (function () {$ ("#btn"). click (function () {$ .post ("mvc/getPerson", {name: $ ("#name"). val ()}, function (data) {alert (data);});});}); // redirect @RequestMapping ("/redirect") public String redirect () {return "redirect: hello"; }1. Zwei JAR -Pakete müssen importiert werden
2. Fügen Sie die SpringMVC -Konfigurationsdatei hinzu
<!-Einstellungen hochladen-> <bean id = "multipartresolver"> <Eigenschaft name = "MaxUploadsize" value = "102400000"> </property> </bean>
3. Methodencode
@RequestMapping (value = "/upload", method = requestMethod.post) public String upload (httpServletRequest req) löst eine Ausnahme aus {multiparthttpServletRequest mreq = (multiparthttpletRequest) req; MultiPartFile -Datei = mreq.getFile ("Datei"); String Dateiname = Datei.getOriginalFileName (); SimpleDateFormat SDF = new SimpledateFormat ("yyyymmddhhmms"); FileOutputStream fos = new FileOutputStream (req.getSession (). GetServletContext (). GetRealPath ("/")+"Upload/"+sdf.format (New Date ())+Dateiname.substring (Dateiname.Lastindexof ('.'))); fos.write (file.getBytes ()); fos.flush (); fos.close (); zurück "Hallo"; }4. Formular an der Rezeption
<form action = "mvc/upload" method = "post" engType = "multiPart/Form-Data"> <Eingabe type = "Datei" name = "file"> <br> <Eingabe type = "sure" value = "subieren"> </form>
@Controller @requestMapping ("/test") public class mvccontroller1 {@RequestMapping (value = "/param") public String testRequestParam (@RequestParam (value = "id") Integer id, @RequestParam (value = "name") zurück "/Hallo"; }}1.Restcontroller
@Controller@RequestMapping ("/rest") public class rastController {@RequestMapPing (value = "/user/{id}", method = requestMethod.get) public String get (@PathVariable ("id") Integer id) {System.out.println ("Get"+id); zurück "/Hallo"; } @RequestMapping (value = "/user/{id}", method = requestMethod.post) public String post (@PathVariable ("id") Integer id) {System.out.println ("post"+id); zurück "/Hallo"; } @RequestMapping (value = "/user/{id}", method = requestMeth.put) public String put (@PathVariable ("id") Integer id) {System.out.println ("put"+id); zurück "/Hallo"; } @RequestMapping (value = "/user/{id}", method = requestMethod.delete) public String delete (@PathVariable ("id") Integer id) {System.out.println ("Delete"+id); zurück "/Hallo"; }}2. Formularformular sendet Put- und Löschen von Anfragen
Konfigurieren Sie in web.xml
<!-Konfigurieren Sie das HiddenhttpMethodFilter, konvertieren Sie die Post-Methode, um-> <Filter> <Filter-name> HiddenhttpMethodFilter </filter-name> <filterklasse> org.springFileWork.web.filter-filter-filter-filter-filter-filter-filter> </filter> </filter> </filter> </filter> </filter> </filter> <Filter> <Filter> </Filter> <Filter> </filter> </filter> </filter- <Filter-name> hiddenhttpMethodFilter </filter-name> <url-pattern>/*</url-pattern> </filter-hermping>
Im Vordergrund können Sie den folgenden Code verwenden, um eine Anforderung zu generieren
<form action = "rest/user/1" methode = "post"> <Eingabe type = "Hidden" name = "_ method" value = "put"> <Eingabe type = "value =" put "> </form> <form action =" rest/user/1 "methode =" post "> <input type value = "get"> </form> <form action = "rest/user/1" method = "post"> <Eingabe type = "Hidden" name = "_ method" value = "delete"> <Eingabe type = "value =" delete "> </form>
1. Importieren Sie das folgende JAR -Paket
2. Methodencode
@Controller @RequestMapping ("/json") public class jsonController {@ResponseBody @RequestMapping ("/user") public user get () {user u = new user (); U.Setid (1); U.SetName ("Jayjay"); U.SetBirth (neues Datum ()); kehre u zurück; }}1. Behandeln Sie lokale Ausnahmen (in Controller)
@ExceptionHandler public modelAndView exceptionHandler (Ausnahme ex) {modelAndView mv = new ModelAndView ("Fehler"); Mv.AddObject ("Ausnahme", Ex); System.out.println ("in testExceptionHandler"); MV zurückgeben; } @RequestMapping ("/error") public String error () {int i = 5/0; zurück "Hallo"; }2. Umgehen Sie globale Ausnahmen (alle Controller)
@ControllerAdvicePublic Class TestControllerAdvice {@ExceptionHandler public modelAndView ExceptionHandler (Exception ex) {modelAndView mv = new ModelAndView ("Fehler"); Mv.AddObject ("Ausnahme", Ex); System.out.println ("In testControllerAdvice"); MV zurückgeben; }}3. Eine andere Möglichkeit, mit globalen Ausnahmen umzugehen
Konfigurieren Sie in der SpringMVC -Konfigurationsdatei
<!-SimpleMappingExceptionResolver konfigurieren-> <bean> <Eigenschaft name = "exceptionMappings"> <props> <prop key = "java.lang.arithmeTexception"> Fehler </prop> </props> </property> </bean> </bean>
Fehler ist eine Fehlerseite
1. Erstellen Sie eine MyInterceptor -Klasse und implementieren Sie die Handlerinterceptor -Schnittstelle
public class myInterceptor implementiert handlerinterceptor {@Override public void Aftercompletion (httpServletRequest arg0, httpServletResponse arg1, Objekt arg2, Ausnahme arg3) löst die Ausnahme aus {System.out.println ("Aftercompletion"); } @Override public void postSandle (httpServletRequest arg0, httpServletResponse arg1, Object arg2, modelAndView arg3) löst eine Ausnahme aus {System.out.println ("postSandle"); } @Override public boolean prehandle (httpServletRequest arg0, httpServletResponse arg1, Object arg2) löst eine Ausnahme aus {System.out.println ("prehandle"); zurückkehren; }}2. Konfigurieren Sie in der SpringMVC -Konfigurationsdatei
<!-Interceptor-Einstellung-> <mvc: interceptors> <mvc: interceptor> <mvc: maping path = "/mvc/**"/> <bean> </bean> gt; </mvc: interceptor> </mvc: interceptors>
3..
1. Importieren Sie das von Hibernate-Validate benötigte JAR-Paket
(Nicht ausgewählt, müssen nicht importiert werden)
2. Schreiben Sie den Benutzer der Entitätsklasse und fügen Sie Bestätigungsanmerkungen hinzu
public class User {public int getId () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public date getBirth () {return birtht; } public void setBirth (Datum Geburt) {this.birth = birth; } @Override public String toString () {return "user [id =" + id + ", name =" + name + ", birg =" + birth + "]"; } private int id; @NotEmpty Private String Name; @Past @datetimeFormat (muster = "yyyy-mm-dd") Private Datum Geburt;}PS: @past bedeutet, dass Zeit ein früherer Wert sein muss
3. Verwenden Sie die Form von SpringMVC in JSP in JSP
<Formular: Form action = "Form/add" methode = "post" modelAttribute = "Benutzer"> ID: <Formular: input path = "id"/> <Form: Fehler Path = "ID"/> <br> Name: <Formular: Eingabespath = "Name"/> <Form: Fehler Path = "Name"/> <br> Geburts: <Form: <Bürde: <Bürde: <Births: ERBORE PATH = ". Path = "Geburtsgeburt"/> <Form: fehlerspath = "Geburts"/> <Form: fehlerspath = "Geburts"/> <Eingabe type = "subine" value = "subieren"> </Form: Form>
PS: Pfad entspricht dem Namen
4. Code in Controller
@Controller@RequestMapping ("/Form") public class FormController {@RequestMapPing (value = "/add", method = requestMethod.post) public String add (@valid user u, BindingResult BR) {if (br.GetErrorCount ()> 0) {returnResult "adduser"; } return "showuser"; } @RequestMapping (value = "/add", method = requestMethod.get) public String add (map <string, objekt> map) {map.put ("user", new user ()); zurück "adduser"; }}PS:
1. Da das modelAttribute -Attribut in JSP verwendet wird, muss es in der Anforderungsdomäne einen "Benutzer" geben.
2.@Gültige Mittelwerte überprüfen die Parameter gemäß der Annotation, die auf der Entität gekennzeichnet ist
3. Kehren Sie zur Originalseite zurück, um erneut zu exprimieren, und das Formular wird auch erneut exprimieren.
5. Fehlermeldung anpassen
Fügen Sie Lokale hinzu. Properties im SRC -Verzeichnis
NotEmpty.User.Name = Name kann nicht leerpast.user.Birth = Geburt sein sollte eine vergangene valuedatetimeFormat.User.Birth = Das Format der Eingabe ist falsch.
Konfigurieren Sie in der SpringMVC -Konfigurationsdatei
<!-konfigurieren
6. Internationale Anzeige
Fügen Sie unter src locale_zh_cn.properties hinzu
userername = Account Passwort = Passwort
In Ort hinzugefügt.Properties
userername = user namepassword = password
Erstellen Sie ein Ort. Jsp
<body> <fmt: message key = "userername"> </fmt: message> <fmt: message key = "password"> </fmt: message> </body>
Konfigurieren Sie in SpringMVC
<!-Machen Sie die JSP-Seite können besucht werden-> <MVC: View-Controller Path = "/Locale" View-Name = "Locale"/>
Lassen Sie sich locale.jsp direkt unter Web-Inf zugreifen
Besuchen Sie schließlich Locale.jsp, wechseln Sie die Browsersprache und die Sprache, die das Konto und das Passwort auch umgeschaltet wird.
1. Erstellen Sie einen Test.
2.Auser Entity -Klasse
public class User {public int getId () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public date getBirth () {return birtht; } public void setBirth (Datum Geburt) {this.birth = birth; } @Override public String toString () {return "user [id =" + id + ", name =" + name + ", birg =" + birth + "]"; } private int id; @NotEmpty Private String Name; @Past @datetimeFormat (muster = "yyyy-mm-dd") Private Datum Geburt;}3.Userservice Klasse
@ComponentPublic Class UserService {public userService () {System.out.println ("UserService Constructor .../n/n/n/n/n/n/n/n"); } public void Save () {System.out.println ("Save"); }}4.Usercontroller
@Controller @RequestMapping ("//integrate") öffentliche Klasse UserController {@autowired Private UserService UserService; @RequestMapping ("/user") public String SaveUser (@RequestBody @ModelAttribute us u) {System.out.println (u); UserService.save (); zurück "Hallo"; }}5.Spring -Konfigurationsdatei
Erstellen Sie SpringIOC -Konfigurationsdatei -Anwendungencontext.xml im SRC -Verzeichnis
<? XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-ning-util- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "xmlns: util =" http://www.springframework.org/schema/util " xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context"> <context: exkluation-scan-base-package = "test.SPRING. type = "Annotation" Expression = "org.springFramework.steretype.Controller"/> <context: exklude-filter type = "Annotation" Expression = "org.springFramework.web.bind.Annotation.ControllerAdvice"/> </context: component-scan> </boans> </bohnen>
Konfiguration in web.xml hinzufügen
<!-- configure the springIOC --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
6. Machen Sie eine gewisse Konfiguration in SpringMVC, um zu verhindern
<!-scannen Sie das Paket und das Subpaket-> <Context: component-scan base-package = "test.springMvc.Integrate"> <context: include-filter type = "Annotation" Expression = "org.springFramework.steretype.Controller"/> <context: inclyde-filter type = "Annotation" Expression = "org.springframework.web.bind.annotation.ControllerAdvice"/> </context: component-scan>
1. SpringMVC wird basierend auf der Methode entwickelt, und Struts2 wird basierend auf der Klasse entwickelt. SpringMVC ordnet die URL und die Methode im Controller ab. Nach erfolgreicher Zuordnung erzeugt SpringMVC ein Handler -Objekt, das nur eine Methode enthält. Die Methodenausführung endet und die formalen Parameterdaten werden zerstört. Die Controller -Entwicklung von SpringMVC ähnelt der Entwicklung von Webdiensten.
2. SpringMVC kann die Singleton -Entwicklung durchführen, und es wird empfohlen, die Singleton -Entwicklung zu verwenden. Struts2 empfängt Parameter über die Mitgliedsvariablen der Klasse. Singleton kann nicht verwendet werden, nur mehrere Fälle können verwendet werden.
3. Nach dem tatsächlichen Test ist Struts2 langsam, da es Streben -Tags verwendet. Wenn Sie Streben verwenden, wird empfohlen, JSTL zu verwenden.