Heim > Java > javaLernprogramm > Hauptteil

SpringMVC-Lernreihe (5) Datenbindung-2

黄舟
Freigeben: 2017-03-03 10:54:54
Original
1445 Leute haben es durchsucht

In Serie (SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2) haben wir vorgestellt, wie man @RequestParam zum Binden von Daten verwendet. Schauen wir uns an, wie man andere Datenbindungsanmerkungen verwendet.

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.@PathVariable wird zum Binden von URL-Vorlagenvariablenwerten verwendet. Wir haben bereits in Serie (SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2) vorgestellt, wie man dies verwendet, und werden hier nicht näher darauf eingehen.

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.@CookieValue wird verwendet, um Daten in Cookie zu binden. Unten verwenden wir die Session-ID im Cookie zum Testen:

Cookiebind-Aktion in DataBindController hinzufügen, der Code lautet wie folgt:

//@CookieValue Test@RequestMapping(value="/cookiebind", method = {RequestMethod.GET})public String cookieBind(HttpServletRequest request, Model model, @CookieValue(value="JSESSIONID", defaultValue="") String jsessionId){
    
    model.addAttribute("jsessionId", jsessionId);    return "cookiebindresult";
}
Nach dem Login kopieren


Fügen Sie es hinzu Der Ansichtenordner Eine cookiebindresult.jsp-Ansicht, der Code lautet wie folgt:

nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2C//DTD HTML SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.org/TR/htmlSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2/loose.dtd"><meta><title>Insert title here</title>
    ${jsessionId}
Nach dem Login kopieren


Führen Sie den Test aus:

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2

Sie können sehen, dass die Sitzungs-ID erreicht wurde.

Hinweis: @CookieValue hat auch SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Parameter wie @RequestParam und seine Bedeutung ist dieselbe wie der @RequestParam-Parameter.

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.@RequestHeader wird verwendet, um die Daten im Anforderungsheader zu binden. Wir verwenden @RequestHeader, um den User-Agent zur Demonstration abzurufen:

Requestheaderbind-Aktion in DataBindController hinzufügen, der Code lautet wie folgt folgt:

//@RequestHeader Test@RequestMapping(value="/requestheaderbind", method = {RequestMethod.GET})public String requestHeaderBind(HttpServletRequest request, Model model, @RequestHeader(value="User-Agent", defaultValue="") String userAgent){
    
    model.addAttribute("userAgent", userAgent);    return "requestheaderbindresult";
}
Nach dem Login kopieren


Fügen Sie eine requestheaderbindresult.jsp-Ansicht im Ansichtenordner hinzu. Der Code lautet wie folgt:

nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2C//DTD HTML SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.org/TR/htmlSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2/loose.dtd"><meta><title>Insert title here</title>
    ${userAgent}
Nach dem Login kopieren


Führen Sie den Test aus:

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2

Sie können sehen, dass der User-Agent erhalten wurde.

Hinweis: @RequestHeader hat auch SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Parameter wie @RequestParam und seine Bedeutung ist dieselbe wie der @RequestParam-Parameter.

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.@ModelAttribute bindet Daten an das Modell. In der modelAutoBind-Aktion der Serie (SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2) lautet der Code zum Hinzufügen der vom Formular übermittelten Daten zum Modell wie folgt:

@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

Mit Hilfe von @ModelAttribute können wir Sprechen Sie einfacher über Daten. Fügen Sie sie dem Modell hinzu und ändern Sie den obigen Code wie folgt:

@RequestMapping(value="/modelautobind", method = {RequestMethod.POST})public String modelAutoBind(HttpServletRequest request, @ModelAttribute("accountmodel") AccountModel accountModel){    
    return "modelautobindresult";
}
Nach dem Login kopieren

Führen Sie den Test aus:

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2

Sie können sehen, dass es immer noch erfolgreich ist. Die übermittelten Daten sind gebunden.

SpringMVC-Lernreihe (5) Datenbindung-2. Der Datenumfang im Modell ist auf Anfrageebene, was bedeutet, dass in einer Anfrageanfrage die von anderen Anfrageanfragen angeforderten Daten des Modells nicht abgerufen werden können. Wir können jedoch @SessionAttributes verwenden, um Daten in der Sitzung zu speichern und Daten zwischen mehreren Anforderungen zu verwalten, sodass wir Anforderungen wie das Senden von Formularen schrittweise umsetzen können. Sehen wir uns an, wie man Daten in zwei Schritten an AccountModel bindet:

在DataBindController上添加:

@SessionAttributes(value = "sessionaccountmodel")
Nach dem Login kopieren

在DataBindController添加usernamebind和passwordbind action,代码如下:

//@SessionAttributes Test@ModelAttribute("sessionaccountmodel")public AccountModel initAccountModel(){    
    return new AccountModel();
}

@RequestMapping(value="/usernamebind", method = {RequestMethod.GET})public String userNameBind( Model model, AccountModel accountModel){
    
    model.addAttribute("sessionaccountmodel", new AccountModel());    return "usernamebind";
}

@RequestMapping(value="/usernamebind", method = {RequestMethod.POST})public String userNameBindPost( @ModelAttribute("sessionaccountmodel") AccountModel accountModel){    
    //重定向到密码绑定测试
    return "redirect:passwordbind";
}

@RequestMapping(value="/passwordbind", method = {RequestMethod.GET})public String passwordBind(@ModelAttribute("sessionaccountmodel") AccountModel accountModel){    
    return "passwordbind";
}

@RequestMapping(value="/passwordbind", method = {RequestMethod.POST})public String passwordBindPost(@ModelAttribute("sessionaccountmodel") AccountModel accountModel, SessionStatus status){    
    //销毁@SessionAttributes存储的对象    status.setComplete();    //显示绑定结果
    return "sessionmodelbindresult";
}
Nach dem Login kopieren


由于我们在controller上指定了@SessionAttributes,所以在@ModelAttribute(“xxx”)注解的参数会直接在@SessionAttributes中查找名为”xxx”的对象,如果没有找到则调用@ModelAttribute(“xxx”)注解的方法返回对象并存入@SessionAttributes(如果没有找到且没有@ModelAttribute(“xxx”)注解的方法就会抛出HttpSessionRequiredException)。当执行到最后一步就可以调用SessionStatus .setComplete()方法把@SessionAttributes中保存对象销毁了(不会清除HttpSession中的数据)。

在views文件夹中添加usernamebind.jsp、passwordbind.jsp和sessionmodelbindresult.jsp视图内容分别如下:

nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2C//DTD HTML SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.org/TR/htmlSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2/loose.dtd"><meta><title>Insert title here</title>
    <form>     
        用户名:<input><br>
        <input>
    </form>  
Nach dem Login kopieren


nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2C//DTD HTML SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.org/TR/htmlSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2/loose.dtd"><meta><title>Insert title here</title>
    <form>     
        密 码:<password></password><br>
        <input>
    </form>  
Nach dem Login kopieren


nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2C//DTD HTML SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.org/TR/htmlSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2/loose.dtd"><meta><title>Insert title here</title>
    用户名:${sessionaccountmodel.username}<br>
    密 码:${sessionaccountmodel.password}
Nach dem Login kopieren


运行测试:

SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2

SpringMVC-Lernreihe (5) Datenbindung-2

SpringMVC-Lernreihe (5) Datenbindung-2

可以看到我们已经成功的分SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2步把数据绑定到AccountModel中了。

注:

@SessionAttributes有value和types两个参数其中value指明要对象的名称,types指定要绑定对象的类型,如@SessionAttributes(value = "sessionaccountmodel", types=AccountModel.class)两者是and关系,需要同时满足。也可以同时指定多个value和types 如:@SessionAttributes(value = {"aa", "aa"} , types={XXX.class, YYY.class}) 。

SpringMVC-Lernreihe (5) Datenbindung-2.@RequestBody 调用合适的MessageConvert来把非application/x-www-form-urlencoded请求中的内容转换为指定的对象它通常与@ResponseBody合用,@ResponseBody与.@RequestBody刚好相反,他把指定的对象转换为合适的内容(请求头为Accept:application/json 则返回json数据)并返回。这里我们用一个ajax请求做演示:

由于Spring默认解析json用的是Jackson,所以我们这里要把jackson-core-asl-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.9.SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.jar和jackson-mapper-asl-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.9.SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.jar两个包添加到我们项目。

修改AccountModel让其继承Serializable接口,并添加一个空的构造函数(为了Jackson做转换)。

在DataBindController添加requestBodyBindaction,代码如下:

//@RequestBody Test@RequestMapping(value="/requestbodybind", method = {RequestMethod.GET})public String requestBodyBind(Model model){
    
    model.addAttribute("accountmodel", new AccountModel());    return "requestbodybind";
}

@RequestMapping(value="/requestbodybind", method = {RequestMethod.POST})public @ResponseBody AccountModel requestBodyBind(@RequestBody AccountModel accountModel){            
    return accountModel;
}
Nach dem Login kopieren


在views文件夹中添加requestbodybind.jsp视图内容如下:

nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2C//DTD HTML SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.0SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2 Transitional//EN" "http://www.wSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.org/TR/htmlSpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2/loose.dtd"><script datenbindung-2 datenbindung-springmvc-lernreihe datenbindung-2.8.springmvc-lernreihe></script><meta><title>Insert title here</title>
    <form>     
        用户名:<input><br>
        密 码:<password></password><br>
        <input>
    </form> 
    
    <script>
        $(function() { 
            $("#submit").click(function() {   
                var postdata = &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;{"username":"&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29; + $(&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;#username&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;).val() + &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;","password":"&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29; + $(&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;#password&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;).val() + &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;"}&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;;   
                $.ajax({  
                    type : &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;POST&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;,  
                    contentType : &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;application/json&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;,  
                    url : &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;http://www.php.cn/:8080/SpringMVCLesson/databind/requestbodybind&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;,  
                    processData : false,  
                    dataType : &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;json&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;,  
                    data : postdata,  
                    success : function(data) {  
                        alert(&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;username : &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;+data.username+&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;\npassword : &#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;+data.password);  
                    },  
                    error : function() {  
                        alert(&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;error...&#SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-29;);  
                    }  
                }); 
            });
        });    </script> 
Nach dem Login kopieren


运行测试:

SpringMVC-Lernreihe (5) Datenbindung-2

Das Ergebnis ist korrekt und beweist, dass die Konvertierung erfolgreich war.

SpringMVC-Lernreihe (5) Datenbindung-2.@RequestPart bindet Daten vom Typ „multipart/form-data“, unterstützt das Hochladen von javax.servlet.http.Part-Dateien und kann eine Typkonvertierung durchführen. Weitere Informationen finden Sie in der offiziellen Dokumentation:

http://docs.spring.io/spring-framework/docs/SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.x/spring-framework-reference/htmlsingle/#new-in-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2.SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2-mvc-requestpart

Das Obige ist das SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Der Inhalt von Data Binding-SpringMVC-Lernreihe (SpringMVC-Lernreihe (5) Datenbindung-2) Datenbindung-2. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!