Heim > Java > javaLernprogramm > Hauptteil

SpringMVC-Lernreihe (4) Datenbindung-1

黄舟
Freigeben: 2017-03-03 10:52:08
Original
1481 Leute haben es durchsucht

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>
Nach dem Login kopieren


Unter anderem wird

maxUploadSize

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;
    }
        
}
Nach dem Login kopieren


Fügen Sie zwei Ansichten, paraambind.jsp und paraambindresult.jsp, im Ordner „views“ hinzu. Der Inhalt lautet wie folgt:


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>
    
Nach dem Login kopieren
          
          
             
  


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}
Nach dem Login kopieren


Führen Sie das Projekt aus, geben Sie den Inhalt ein und laden Sie die Datei hoch:

SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1Senden, um das anzuzeigen Ergebnisse:

SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1Sie 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;
    }
}
Nach dem Login kopieren

在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";
}
Nach dem Login kopieren


在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>
    
              用户名:
        密 码:
             
  
Nach dem Login kopieren

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}
Nach dem Login kopieren


运行测试:

SpringMVC-Lernreihe (SpringMVC-Lernreihe (4) Datenbindung-1) Datenbindung-1

用户名 输入AAA 密码 输入BBB,提交:

SpringMVC-Lernreihe (4) Datenbindung-1

可以看到结果显示正确,说明自动绑定成功。

注:

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)!



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage