Maison > Java > javaDidacticiel > Série d'apprentissage SpringMVC (4) Liaison de données-1

Série d'apprentissage SpringMVC (4) Liaison de données-1

黄舟
Libérer: 2017-03-03 10:52:08
original
1507 Les gens l'ont consulté

Dans la série (Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1), nous avons présenté comment une requête est mappée à une action. L'étape suivante est bien sûr de savoir comment obtenir les données de la requête, ce qui mène au contenu de cet article - la liaison de données.

Tout d'abord, jetons un coup d'œil aux annotations pour lier les données :

Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.@RequestParam, lie les données d'une seule requête, qui peuvent être des données dans l'URL, des données soumises par le formulaire ou fichier téléchargé ;
Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.@PathVariable, lier la valeur de la variable du modèle d'URL ;
Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.@CookieValue, lier les données du cookie
Série dapprentissage SpringMVC (4) Liaison de données-1.@RequestHeader, lier les données d'en-tête de la demande ; lier les données au modèle ;
6.@SessionAttributes, lier les données à la session
7.@RequestBody, utilisé pour traiter le contenu dont le type de contenu n'est pas application/x-www-form-urlencoded, par exemple application/. json, application/xml, etc. ;
8.@RequestPart, lie les données "multipart/data" et peut saisir la conversion d'objet en fonction du type de données

Voyons comment l'utiliser ci-dessous :

Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.@RequestParam :

Afin de vérifier la liaison du fichier, nous devons d'abord procéder comme suit :

a. Mettez commons-fileupload-Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.jar et commons-io- Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.Série dapprentissage SpringMVC (4) Liaison de données-1.jar Deux packages jar ont été ajoutés à notre projet.

b. Configurez le fichier springservlet-config.xml dans notre projet pour prendre en charge le téléchargement de fichiers :


<!-- 支持上传文件 -->  <bean>  
    <!-- 设置上传文件的最大尺寸为Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1MB -->  
    <property>  
        <value>Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-10Série dapprentissage SpringMVC (4) Liaison de données-18576</value>  
    </property>
    <property> 
        <value>UTF-8</value> 
    </property></bean>
Copier après la connexion


Parmi eux,

maxUploadSize

est utilisé pour limiter la taille maximale des fichiers téléchargés. Il peut également être laissé non défini, ce qui signifie qu'il n'y a aucune limite à la taille des fichiers téléchargés. defaultEncoding est utilisé pour définir le format d'encodage des fichiers téléchargés et est utilisé pour résoudre le problème des noms chinois tronqués des fichiers téléchargés. Voyons comment l'utiliser :

Ajoutez un DataBindController, qui possède Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 actions paramBind correspondant respectivement aux requêtes get et post :

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 urlParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 = ServletRequestUtils.getStringParameter(request, "urlParam", null);
        String formParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 = ServletRequestUtils.getStringParameter(request, "formParam", null);
        MultipartFile formFileSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 = ((MultipartHttpServletRequest) request).getFile("formFile"); 
        
        ModelAndView modelAndView = new ModelAndView();  
        modelAndView.addObject("urlParam", urlParam);  
        modelAndView.addObject("formParam", formParam);  
        modelAndView.addObject("formFileName", formFile.getOriginalFilename());  
        
        modelAndView.addObject("urlParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1", urlParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1);  
        modelAndView.addObject("formParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1", formParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1);  
        modelAndView.addObject("formFileNameSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1", formFileSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.getOriginalFilename());  
        modelAndView.setViewName("parambindresult");  
        return modelAndView;
    }
        
}
Copier après la connexion


Ajoutez deux vues, paraambind.jsp et paraambindresult.jsp, dans le dossier des vues :


nbsp;html PUBLIC "-//WSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1C//DTD HTML Série dapprentissage SpringMVC (4) Liaison de données-1.0Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 Transitional//EN" "http://www.wSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.org/TR/htmlSérie dapprentissage SpringMVC (4) Liaison de données-1/loose.dtd"><meta><title>Insert title here</title>
    
Copier après la connexion
          
          
             
  


nbsp;html PUBLIC "-//WSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1C//DTD HTML Série dapprentissage SpringMVC (4) Liaison de données-1.0Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 Transitional//EN" "http://www.wSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.org/TR/htmlSérie dapprentissage SpringMVC (4) Liaison de données-1/loose.dtd"><meta><title>Insert title here</title>
    自动绑定数据:

    ${urlParam}
    ${formParam}
    ${formFileName}



    手动获取数据:

    ${urlParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1}
    ${formParamSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1}
    ${formFileNameSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1}
Copier après la connexion

Exécutez le projet, saisissez le contenu et choisissez de télécharger le fichier :

Envoyez pour voir le résultats : Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1

Vous pouvez voir que les données liées ont été obtenues. Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1

Ci-dessus, nous avons montré comment lier des données à une seule variable, mais dans les applications réelles, nous avons généralement besoin d'obtenir l'objet modèle, nous n'avons pas besoin de lier les données à des variables individuelles, puis de comparer. Lorsque vous attribuez une valeur à un modèle, il vous suffit d'ajouter le modèle aux paramètres d'action correspondants (il n'est pas nécessaire de spécifier ici des annotations pour lier les données). Spring MVC convertira automatiquement les données et les liera à l'objet du modèle. . Tout est aussi simple que ça. Le test est le suivant :

添加一个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;
    }
}
Copier après la connexion

在DataBindController里面添加Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-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";
}
Copier après la connexion


在views文件夹中添加modelautobind.jsp和modelautobindresult.jsp Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1个视图用于提交数据和展示提交的数据:

modelautobind.jsp:

nbsp;html PUBLIC "-//WSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1C//DTD HTML Série dapprentissage SpringMVC (4) Liaison de données-1.0Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 Transitional//EN" "http://www.wSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.org/TR/htmlSérie dapprentissage SpringMVC (4) Liaison de données-1/loose.dtd"><meta><title>Insert title here</title>
    
              用户名:
        密 码:
             
  
Copier après la connexion

modelautobindresult.jsp :

nbsp;html PUBLIC "-//WSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1C//DTD HTML Série dapprentissage SpringMVC (4) Liaison de données-1.0Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 Transitional//EN" "http://www.wSérie dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.org/TR/htmlSérie dapprentissage SpringMVC (4) Liaison de données-1/loose.dtd"><meta><title>Insert title here</title>
    用户名:${accountmodel.username}
    密 码:${accountmodel.password}
Copier après la connexion


运行测试:

Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1

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

Série dapprentissage SpringMVC (4) Liaison de données-1

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

注:

Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.关于@RequestParam的参数,这是一个@RequestParam的完整写法@RequestParam(value="username", required=true, defaultValue="AAA")。

value表示要绑定请求中参数的名字;

required表示请求中是否必须有这个参数,默认为true这是如果请求中没有要绑定的参数则返回Série dapprentissage SpringMVC (4) Liaison de données-10Série dapprentissage SpringMVC (4) Liaison de données-1;

defaultValue表示如果请求中指定的参数值为空时的默认值;

要绑定的参数如果是值类型必须要有值否则抛异常,如果是引用类型则默认为null(Boolean除外,默认为false);

 

Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1.在刚才添加的Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1个action中可以看到返回类型和以前的不一样了由ModelAndView变成了String,这是由于Spring MVC 提供Model、ModelMap、Map让我们可以直接添加渲染视图需要的模型数据,在返回时直接指定对应视图名称就可以了。同时Map是继承于ModelMap的,而Model和ModelMap是继承于ExtendedModelMap的。

 

Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1. Dans la vue modelautobind.jsp qui vient d'être ajoutée, vous pouvez voir form:form, form:input Balises d'attente, ce sont les balises de formulaire fournies par Spring MVC. Avec l'aide de ces balises, nous pouvons facilement lier les données du modèle au formulaire (bien sûr, vous pouvez également choisir de continuer à utiliser les balises de formulaire HTML natives). Pour utiliser Spring MVC ajoute simplement une référence à la vue @ préfixe taglib="formulaire "uri="http://www.php.cn/" %> suffit, à propos du printemps Le contenu spécifique des balises de formulaire MVC sera présenté dans les prochains articles.

Ce qui précède est le contenu de Data Binding-Série dapprentissage SpringMVC (Série dapprentissage SpringMVC (4) Liaison de données-1) Liaison de données-1 de SpringMVC Learning Series (Série dapprentissage SpringMVC (4) Liaison de données-1). Pour plus de contenu connexe, veuillez faire attention au PHP. Site Web chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal