In Serie (SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1) haben wir vorgestellt, wie eine Anfrage einer Aktion zugeordnet wird. Der nächste Schritt ist natürlich, wie man die Daten in der Anfrage erhält, was zum Inhalt dieses Artikels führt – Datenbindung.
Werfen wir zunächst einen Blick auf die Anmerkungen zum Binden von Daten:
SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.@RequestParam bindet einzelne Anforderungsdaten, bei denen es sich um Daten in der URL, über das Formular übermittelte Daten oder Daten handeln kann hochgeladene Datei;
SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.@PathVariable, URL-Vorlagenvariablenwert binden;
SpringMVC-Lernreihe (4) Datenbindung-1.@RequestHeader, Anforderungsheaderdaten binden; binden Sie Daten an Modell;
6.@SessionAttributes, binden Sie Daten an Sitzung
7.@RequestBody, wird verwendet, um Inhalte zu verarbeiten, deren Inhaltstyp nicht application/x-www-form-urlencoded ist, zum Beispiel application/ json, application/xml usw.;
8.@RequestPart, bindet „multipart/data“-Daten und kann Objektkonvertierungen entsprechend dem Datentyp eingeben
Sehen wir uns an, wie man es verwendet:
SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.@RequestParam:
Um die Dateibindung zu überprüfen, müssen wir zuerst Folgendes tun:
a. Geben Sie commons-fileupload-SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.jar und commons ein -io- SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.SpringMVC-Lernreihe (4) Datenbindung-1.jar Zwei JAR-Pakete wurden unserem Projekt hinzugefügt.
b. Konfigurieren Sie die Datei springservlet-config.xml in unserem Projekt, um das Hochladen von Dateien zu unterstützen:
<!-- 支持上传文件 --> <bean> <!-- 设置上传文件的最大尺寸为SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1MB --> <property> <value>SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-10SpringMVC-Lernreihe (4) Datenbindung-18576</value> </property> <property> <value>UTF-8</value> </property></bean>
verwendet, um die maximale Größe hochgeladener Dateien zu begrenzen. Es kann auch deaktiviert bleiben, was bedeutet, dass es keine Begrenzung für die Größe hochgeladener Dateien gibt. defaultEncoding wird verwendet, um das Codierungsformat hochgeladener Dateien festzulegen und das Problem verstümmelter chinesischer Namen hochgeladener Dateien zu lösen. Sehen wir uns an, wie man es verwendet:
Fügen Sie einen DataBindController hinzu, der über zwei paramBind-Aktionen verfügt, die Get- bzw. Post-Anfragen entsprechen:
package com.demo.web.controllers;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.ServletRequestUtils;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping(value = "/databind")public class DataBindController { @RequestMapping(value="/parambind", method = {RequestMethod.GET}) public ModelAndView paramBind(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("parambind"); return modelAndView; } @RequestMapping(value="/parambind", method = {RequestMethod.POST}) public ModelAndView paramBind(HttpServletRequest request, @RequestParam("urlParam") String urlParam, @RequestParam("formParam") String formParam, @RequestParam("formFile") MultipartFile formFile){ //如果不用注解自动绑定,我们还可以像下面一样手动获取数据 String urlParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 = ServletRequestUtils.getStringParameter(request, "urlParam", null); String formParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 = ServletRequestUtils.getStringParameter(request, "formParam", null); MultipartFile formFileSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 = ((MultipartHttpServletRequest) request).getFile("formFile"); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("urlParam", urlParam); modelAndView.addObject("formParam", formParam); modelAndView.addObject("formFileName", formFile.getOriginalFilename()); modelAndView.addObject("urlParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1", urlParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1); modelAndView.addObject("formParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1", formParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1); modelAndView.addObject("formFileNameSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1", formFileSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.getOriginalFilename()); modelAndView.setViewName("parambindresult"); return modelAndView; } }
nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1C//DTD HTML SpringMVC-Lernreihe (4) Datenbindung-1.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.org/TR/htmlSpringMVC-Lernreihe (4) Datenbindung-1/loose.dtd"><meta><title>Insert title here</title>
nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1C//DTD HTML SpringMVC-Lernreihe (4) Datenbindung-1.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.org/TR/htmlSpringMVC-Lernreihe (4) Datenbindung-1/loose.dtd"><meta><title>Insert title here</title> 自动绑定数据:
${urlParam}
${formParam}
${formFileName}
手动获取数据:
${urlParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1}
${formParamSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1}
${formFileNameSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1}
Senden, um das anzuzeigen Ergebnisse:
Sie können sehen, dass die gebundenen Daten erhalten wurden.
Oben haben wir gezeigt, wie man Daten an eine einzelne Variable bindet, aber in tatsächlichen Anwendungen müssen wir normalerweise das Modellobjekt abrufen. Keine Sorge, wir müssen keine Daten an einzelne Variablen binden und dann vergleichen Wenn Sie einem Modell einen Wert zuweisen, müssen Sie das Modell nur zu den entsprechenden Aktionsparametern hinzufügen (hier müssen keine Anmerkungen zum Binden von Daten angegeben werden). Spring MVC konvertiert die Daten automatisch und bindet sie an das Modellobjekt. So einfach ist alles. Der Test läuft wie folgt ab:
添加一个AccountModel类作为测试的model:
package com.demo.web.models;public class AccountModel { private String username; private String password; public void setUsername(String username){ this.username=username; } public void setPassword(String password){ this.password=password; } public String getUsername(){ return this.username; } public String getPassword(){ return this.password; } }
在DataBindController里面添加SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1个modelAutoBind的action分别对应get和post请求:
@RequestMapping(value="/modelautobind", method = {RequestMethod.GET})public String modelAutoBind(HttpServletRequest request, Model model){ model.addAttribute("accountmodel", new AccountModel()); return "modelautobind"; } @RequestMapping(value="/modelautobind", method = {RequestMethod.POST})public String modelAutoBind(HttpServletRequest request, Model model, AccountModel accountModel){ model.addAttribute("accountmodel", accountModel); return "modelautobindresult"; }
在views文件夹中添加modelautobind.jsp和modelautobindresult.jsp SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1个视图用于提交数据和展示提交的数据:
modelautobind.jsp:
nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1C//DTD HTML SpringMVC-Lernreihe (4) Datenbindung-1.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.org/TR/htmlSpringMVC-Lernreihe (4) Datenbindung-1/loose.dtd"><meta><title>Insert title here</title>
modelautobindresult.jsp :
nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1C//DTD HTML SpringMVC-Lernreihe (4) Datenbindung-1.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.org/TR/htmlSpringMVC-Lernreihe (4) Datenbindung-1/loose.dtd"><meta><title>Insert title here</title> 用户名:${accountmodel.username}
密 码:${accountmodel.password}
运行测试:
用户名 输入AAA 密码 输入BBB,提交:
可以看到结果显示正确,说明自动绑定成功。
注:
SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.关于@RequestParam的参数,这是一个@RequestParam的完整写法@RequestParam(value="username", required=true, defaultValue="AAA")。
value表示要绑定请求中参数的名字;
required表示请求中是否必须有这个参数,默认为true这是如果请求中没有要绑定的参数则返回SpringMVC-Lernreihe (4) Datenbindung-10SpringMVC-Lernreihe (4) Datenbindung-1;
defaultValue表示如果请求中指定的参数值为空时的默认值;
要绑定的参数如果是值类型必须要有值否则抛异常,如果是引用类型则默认为null(Boolean除外,默认为false);
SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1.在刚才添加的SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1个action中可以看到返回类型和以前的不一样了由ModelAndView变成了String,这是由于Spring MVC 提供Model、ModelMap、Map让我们可以直接添加渲染视图需要的模型数据,在返回时直接指定对应视图名称就可以了。同时Map是继承于ModelMap的,而Model和ModelMap是继承于ExtendedModelMap的。
SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1. In der gerade hinzugefügten Ansicht modelautobind.jsp können Sie form:form, form:input Wait-Tags, das sind die von Spring MVC bereitgestellten Formular-Tags. Mit Hilfe dieser Tags können wir die Modelldaten einfach an das Formular binden (natürlich können Sie auch weiterhin die nativen HTML-Formular-Tags verwenden). Frühling nutzen MVC fügt einfach einen Verweis auf die Ansicht @ taglib prefix="form hinzu " uri="http://www.php.cn/" %> reicht, über den Frühling Der spezifische Inhalt von MVC-Formular-Tags wird in zukünftigen Artikeln vorgestellt.
Das Obige ist der Inhalt von Data Binding-SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1 der SpringMVC Learning Series (SpringMVC-Lernreihe (4) Datenbindung-1). Für weitere verwandte Inhalte achten Sie bitte auf PHP Chinesische Website (www.php.cn)!