In series (SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2) we introduced how to use @RequestParam to bind data. Let's take a look at how to use other data binding annotations.
SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.@PathVariable is used to bind URL template variable values. We have already introduced how to use this in series (SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2) and will not go into details here.
SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.@CookieValue is used to bind the data in Cookie. Below we use the sessionId in the cookie to do the test:
Add cookiebind action in DataBindController, the code is as follows:
//@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"; }
Add a cookiebindresult in the views folder .jsp view, the code is as follows:
nbsp;html PUBLIC "-//WSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2C//DTD HTML SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.0SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 Transitional//EN" "http://www.wSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.org/TR/htmlSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2/loose.dtd"><meta><title>Insert title here</title> ${jsessionId}
Run the test:
You can see that the sessionId has been obtained.
Note: @CookieValue also has SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 parameters like @RequestParam, and its meaning is the same as the @RequestParam parameter.
SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.@RequestHeader is used to bind the data in the request header. We use @RequestHeader to get the User-Agent for demonstration:
Add requestheaderbind action to DataBindController, the code is as follows:
//@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"; }
Add a requestheaderbindresult.jsp view in the views folder, the code is as follows:
nbsp;html PUBLIC "-//WSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2C//DTD HTML SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.0SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 Transitional//EN" "http://www.wSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.org/TR/htmlSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2/loose.dtd"><meta><title>Insert title here</title> ${userAgent}
Run the test:
You can see that the User-Agent has been obtained.
Note: @RequestHeader also has SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 parameters like @RequestParam, and its meaning is the same as the @RequestParam parameter.
SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.@ModelAttribute binds data to the model. In the modelAutoBind action of series (SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2), the code for adding the data submitted by the form to the Model is as follows:
@RequestMapping(value="/modelautobind", method = {RequestMethod.POST})public String modelAutoBind(HttpServletRequest request, Model model, AccountModel accountModel){ model.addAttribute("accountmodel", accountModel); return "modelautobindresult"; }
With the help of @ModelAttribute, we can more simply add the data to the In Model, modify the above code to:
@RequestMapping(value="/modelautobind", method = {RequestMethod.POST})public String modelAutoBind(HttpServletRequest request, @ModelAttribute("accountmodel") AccountModel accountModel){ return "modelautobindresult"; }
Run the test:
You can see that the binding is still successful Submitted data.
SpringMVC Learning Series (5) Data Binding-2. The data scope in Model is Request level, which means that in one Request request, the data of the Model requested by other Request requests cannot be obtained. But we can use @SessionAttributes to store data in the session to maintain data between multiple requests, so that we can implement requirements such as submitting forms in steps. Let’s look at how to bind data to AccountModel in SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 steps:
在DataBindController上添加:
@SessionAttributes(value = "sessionaccountmodel")
在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"; }
由于我们在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 Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2C//DTD HTML SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.0SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 Transitional//EN" "http://www.wSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.org/TR/htmlSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2/loose.dtd"><meta><title>Insert title here</title> <form> 用户名:<input><br> <input> </form>
nbsp;html PUBLIC "-//WSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2C//DTD HTML SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.0SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 Transitional//EN" "http://www.wSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.org/TR/htmlSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2/loose.dtd"><meta><title>Insert title here</title> <form> 密 码:<password></password><br> <input> </form>
nbsp;html PUBLIC "-//WSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2C//DTD HTML SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.0SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 Transitional//EN" "http://www.wSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.org/TR/htmlSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2/loose.dtd"><meta><title>Insert title here</title> 用户名:${sessionaccountmodel.username}<br> 密 码:${sessionaccountmodel.password}
运行测试:
可以看到我们已经成功的分SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-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 Learning Series (5) Data Binding-2.@RequestBody 调用合适的MessageConvert来把非application/x-www-form-urlencoded请求中的内容转换为指定的对象它通常与@ResponseBody合用,@ResponseBody与.@RequestBody刚好相反,他把指定的对象转换为合适的内容(请求头为Accept:application/json 则返回json数据)并返回。这里我们用一个ajax请求做演示:
由于Spring默认解析json用的是Jackson,所以我们这里要把jackson-core-asl-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.9.SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.jar和jackson-mapper-asl-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.9.SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-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; }
在views文件夹中添加requestbodybind.jsp视图内容如下:
nbsp;html PUBLIC "-//WSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2C//DTD HTML SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.0SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2 Transitional//EN" "http://www.wSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.org/TR/htmlSpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2/loose.dtd"><script learning series data binding-2 binding-springmvc binding-2.8.springmvc></script><meta><title>Insert title here</title> <form> 用户名:<input><br> 密 码:<password></password><br> <input> </form> <script> $(function() { $("#submit").click(function() { var postdata = &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;{"username":"&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29; + $(&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;#username&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;).val() + &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;","password":"&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29; + $(&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;#password&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;).val() + &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;"}&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;; $.ajax({ type : &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;POST&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;, contentType : &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;application/json&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;, url : &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;http://www.php.cn/:8080/SpringMVCLesson/databind/requestbodybind&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;, processData : false, dataType : &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;json&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;, data : postdata, success : function(data) { alert(&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;username : &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;+data.username+&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;\npassword : &#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;+data.password); }, error : function() { alert(&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;error...&#SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-29;); } }); }); }); </script>
运行测试:
The result is correct, proving that the conversion is successful.
SpringMVC Learning Series (5) Data Binding-2.@RequestPart binds "multipart/form-data" type data, supports javax.servlet.http.Part file upload, and can perform type conversion. For details, see the official documentation:
http://docs.spring.io/spring-framework/docs/SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.x/spring-framework-reference/htmlsingle/#new-in-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2.SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2-mvc-requestpart
The above is the SpringMVC learning series (SpringMVC Learning Series (5) Data Binding-2) The content of Data Binding-SpringMVC Learning Series (SpringMVC Learning Series (5) Data Binding-2) Data Binding-2. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。一、SpringBoot的特点:简化配置:SpringBoot通过约定优于配置的原则,大大简化了项目的配置过程。它可以自动配置项目所需要的参数,开发人

拦截器(interceptor)的作用SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(InterceptorChain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。拦截器和过滤器区别区别过滤器(Filter)拦截器(Intercepter)使用范围是servlet规范中的一部分,任何JavaWeb工程都可以使用是Spri

springboot和springmvc区别是:1、含义不同;2、配置不同;3、依赖项不同;4、开发时间不同;5、生产力不同;6、实现JAR打包功能的方式不同;7、是否提供批处理功能;8、作用不同;9、社区和文档支持不同;10、是否需要部署描述符。

随着互联网的发展,Web服务越来越普遍。JavaAPI作为一种应用编程接口,也在不断地推出新的版本来适应不同的应用场景。而SpringMVC作为一种流行的开源框架,能够帮助我们轻松地构建Web应用程序。本文将详细讲解在JavaAPI开发中,如何使用SpringMVC进行Web服务处理,包括配置SpringMVC、编写控制器、使用

spring和springmvc的区别:1、定位和功能;2、核心功能;3、应用领域;4、扩展性。详细介绍:1、定位和功能,Spring是一个综合性的应用程序开发框架,提供了依赖注入、面向切面编程、事务管理等功能,旨在简化企业级应用程序的开发,而Spring MVC是Spring框架中的一个模块,用于Web应用程序的开发,实现了MVC模式;2、核心功能等等。

本文主要从源码的阅读和调试的角度,整体的讲解了SpringMVC处理请求的整个流程,并且讲解了参数的绑定以及返回值的处理。相信大家看完后,结合自己的调试信息,会对SpringMVC的请求处理过程有一个更深入的理解。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 English version
Recommended: Win version, supports code prompts!

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)
