概述
SpringMVC有两种数据绑定方式:1、API方式绑定数据 2、注解方式绑定数据
使用注解绑定数据:
1、@RequestParam 绑定单个请求参数值
2、@PathVariable绑定URI模板变量值
3、@CookieValue 绑定Cookie数据值
4、@RequestHeader 绑定请求头数据
5、@ModelAttribute 绑定参数到命令对象
6、@SessionAttributes绑定命令对象到session
通过API绑定数据:我们还可以通过如HttpServletRequest等API得到请求数据,但是推荐使用注解方式,因为注解方式使用起来更简单。
我们需要首先看看功能处理方法支持哪些类型的形式参数,以及他们的具体含义。
一、ServletRequest/HttpServletRequest和ServletResponse/HttpServletResponse
二、InputStream/OutputStream和Reader/Writer
requestBodyIn:等价于request.getInputStream();
responseBodyOut:等价于response.getOutputStream();
三、WebRequest/NativeWebRequest
WebRequest是springmvc 提供的统一请求访问的接口,不仅仅可以访问请求相关数据(如参数区数据、请求头数据、但是访问不了cookie区数据),还可以访问会话和上下文中的数据;NativeWebRequest继承了WebRequest,并提供访问本地ServletAPI的方法
四、HttpSession
session访问不是线程安全的,如果需要线程安全,需要设置AnnotationMethodHandlerAdapter或RequestMappingHandlerAdapter的synchronizeOnSession属性为true,即可线程安全的访问session
五、命令/表单对象
Spring Web MVC 能够自动将请求参数绑定到功能处理方法的命令/表单对象上
六、Model、Map、ModelMap
Spring Web MVC 提供 Model、Map或ModelMap让我们能去暴露渲染视图需要的模型数据‘’
虽然此处注入的是三个不同的类型,但三者是同一个对象
AnnotationMethodHandlerAdapter和requestMappingHandlerAdapter将使用BindingAwareModelMap作为模型对象的实现,此处我们的参数都是同一个BindingAwareModelMap实例
七、Errors/BindingResult
通过注解绑定数据:
@RequestParam 绑定单个请求参数值
@RequestParam注解主要有哪些参数:
value:参数名字 ,也就是入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入
required:是否必须 ,默认是true,表示请求中一定要有相应的参数 否则报404错误码
defaultValue:默认值 ,表示如果请求中没有同名参数的默认值
表示请求中可以没有名字为username的参数,如果没有默认为Null 此处需要注意以下几点:
原子类型:必须有值,否则抛出异常,如果允许空值请使用包装类代替
Boolean 包装类类型:默认Boolean.FALSE,其他引用类型默认为null
对于多个同名请求参数的处理,例如:url?role=admin&role=user
public String requestparam(@RequestParam(value="role")String roles)
实际得到的值是roles="admin,user"。多个值以逗号隔开或者把方法参数定义为字符串数组(String[] roles)或集合(List<String> roles)
@PathVariable 绑定URI模板变量值
如请求的URL为“控制器URL/users/123/topics/456”,则自动将URL中模板变量{userId}和{topicId}绑定到通过@PathVariable注解的同名参数上,入参后userId=123、topicId=456。
@CookieValue绑定cookie数据值
传入参数类型也可以是javax.servlet.http.Cookie类型。
@RequestHeader 绑定请求头数据
@ModelAttribute 绑定请求参数到Model
@ModelAttribute 一共具有以下三种使用方式:
作用在方法参数里面:用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示使用
作用在一般方法上面:该Controller的所有方法在调用前,先执行此@ModelAttribute
作用于方法的返回值上面:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图展示使用
注意:返回值上的user会覆盖方法参数上的user2作为视图的模型名
@SessionAttributes绑定对象到session
在控制器上加入@SessionAttributes(value={"user"})
@SessionAttribute(value={"user"})
public class SessionAttributeController
调用SessionState对象的setComplete()销毁当前控制器上使用的session
最后
以上就是清新天空为你收集整理的SpringMVC的数据绑定的全部内容,希望文章能够帮你解决SpringMVC的数据绑定所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复