当前位置: 代码迷 >> 综合 >> SpringMVC之请求参数的绑定以及注解的用法03
  详细解决方案

SpringMVC之请求参数的绑定以及注解的用法03

热度:67   发布时间:2024-02-08 20:20:01.0

SpringMVC之请求参数的绑定以及注解的用法03

请求参数的绑定说明

绑定机制

表单提交的数据都是k=v格式的 username=haha&password=123

SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的

要求:提交表单的name和参数的名称是相同的

支持的数据类型

基本数据类型和字符串类型

实体类型(JavaBean)

集合数据类型(List、map集合等)

基本数据类型和字符串类型

提交表单的name和参数的名称是相同的

区分大小写

实体类型(JavaBean)

提交表单的name和JavaBean中的属性名称需要一致

如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:

address.name

给集合属性数据封装1. JSP页面编写方式:list[0].属性

请求参数中文乱码的解决

在web.xml中配置Spring提供的过滤器类

<!-- 配置过滤器,解决中文乱码的问题 --> 
<filter><filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!-- 指定字符集 --><init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter>
<filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> 
</filter-mapping>

在控制器类中明确方法接受参数的类型为javaBean对象中的类的对象:

import cn.itcast.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
?
//控制器类
@Controller
@RequestMapping("pms")
public class HelloController {@RequestMapping("submit")
public String sayHello(Account account){
?System.out.println(account);return "ok";
}
}

常用注解

RequestParam

使用说明

作用:

  把请求中指定名称的参数给控制器中的形参赋值。

属性:

  value:请求参数中的名称。

  required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

RequestBody

使用说明

作用:

  用于获取请求体内容。直接使用得到是 key=value&key=value...结构的数据。

get 请求方式不适用。

属性:

  required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值

为 false,get 请求得到是 null。

PathVaribale

使用说明

作用:

  用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符。

url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。

属性:

  value:用于指定 url 中占位符名称。

  required:是否必须提供占位符。

ModelAttribute

使用说明

作用:

  该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参数。

出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可

以修饰有具体返回值的方法。

出现在参数上,获取指定的数据给参数赋值。

属性:

  value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。

应用场景:

当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。

例如:

我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数

据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。

  相关解决方案