Java Spring MVC框架 III

  • Post author:
  • Post category:java




Java Spring MVC框架 III



接收请求参数

● 在Spring MVC中,当需要接收客户端的请求参数时,只需要将各参数直

接声明为处理请求的方法的参数即可,例如:

// /user/reg.do?username=root&password=123456&age=25
@RequestMapping("/reg.do")
public String reg(String username, String password, Integer age) {
System.out.println("username = " + username
+ "
, password = " + password
+ "
, age = " + age);
return "OK";
}

● 在声明参数时,你可以将参数声明为你期望的数据类型,Spring会自动的

执行类型转换

– 经过网络传输得到的数据,最原始的类型都是String – Spring会自动尝试转换类型,通常,类型必须是基础数据类型及其包装类、常用类型(例如String等)、Spring定义的类型等

– 如果自动转换类型失败,会抛出相应的异常

● 如果客户端提交的请求中根本没有匹配名称的参数,则以上获取到的值将是null – 例如:http://localhost/user/login.do

● 如果客户端仅提交了参数名称,却没有值,则以上获取到的值将是””(长度为0的字符串)

– 例如:http://localhost/user/login.do?username=&password=&age=

● 如果客户端提交了匹配名称的参数,并且值是有效的,则可以获取到值

– 例如:http://localhost/user/login.dousername=admin&password=1234&age=27

● 以上名称应该是由服务器端决定的,客户端需要根据以上名称来提交请求参数

● 当有必要的情况下,可以在以上各参数的声明之前添加@RequestParam

注解,其作用主要有:

– 配置name属性:客户端将按照此配置的值提交请求参数,而不再是根据方法的参数名称来提交请求参数

– 配置required属性:是否要求客户端必须提交此请求参数,默认为true,如果不提交,则出现400错误,当设置为false时,如果不提交,则服务器端将此参数值视为null – 配置defaultValue属性:配置此请求参数的默认值,当客户端没有提交此请求参数时,视为此值

● 如果需要客户端提交的请求参数较多,可以将这些参数封装为自定义的数

据类型,并将自定义的数据类型作为处理方法的参数即可,例如:

public class UserRegDTO {
private String username;
private String password;
private Integer age;
// 生成Setters & Getters
// 生成toString(),为了方便查看数据
}

● 在控制器中

// /user/reg.do?username=root&password=123456&age=25
@RequestMapping("/reg.do")
public String reg(UserRegDTO userRegDTO) {
System.out.println(userRegDTO);
return "OK";
}

● 你也可以将多个请求参数区分开来,一部分直接声明为处理请求的方法的

参数,另一部分封装起来。

● 理论上来说,由于一个个的声明请求参数更加简单并且直观,所以,当请

求参数数量非常少时,应该使用这种做法,当参数较多,或参数数量可能

调整(例如需求变化引起的调整),则应该使用封装的数据类型

● 在开发实践中,考虑到需要使用到的其它框架的特性,使用封装的做法更

为常见



接收请求参数的小结

● [★★★★★] 你可以将请求参数一个个的声明为处理请求方法的参数,也

可以将多个参数封装到一个自定义类中,使用自定义类作为处理请求的方

法的参数,Spring MVC框架会自动接收客户端提交的请求参数,并用于

调用你编写的处理请求的方法

● [★★★★★] 在大部分情况下,推荐使用将参数封装到自定义类的做法

● [★★★★★] 你需要保证非String类型的参数是Spring框架可以成功自动

转换类型的,或者,对转换失败有进一步的处理,或可以接受转换失败带

来的后果



我是

将军

;我一直都在,。!



版权声明:本文为letterljhx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。