SpringMVC的请求:获取请求参数

服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型参数:

基本类型参数

POJO类型参数

数组类型参数

集合类型参数

1.获得请求参数:获得基本类型参数

请求路径:http://localhost:8080/springmvc1/quick11?username=zhangsan&age=12

@RequestMapping(value="/quick11")

@ResponseBody

public void save11(String username,int age) throws IOException {

System.out.println(username);

System.out.println(age);}

2.获得请求参数:获得POJO类型参数

Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。

public class User {

private String username;

private int age;

public String getUsername() {return username; }

public void setUsername(String username) {this.username=username;}

public int getAge() {return age;}

public void setAge(int age) {this.age=age;}

@Override

public String toString() {return"User{"+"username='"+ username +'\''+", age="+ age +'}';}}

@RequestMapping(value="/quick12")

@ResponseBody

public void save12(User user) throws IOException {

System.out.println(user);}

3.获得请求参数:获得数组类型参数

Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。

@RequestMapping(value="/quick13")

@ResponseBody

public void save13(String[] strs) throws IOException {

System.out.println(Arrays.asList(strs));}

4.获得请求参数:获得集合类型参数1

获得集合参数时,要将集合参数包装到一个POJO中才可以。

<%--表明是第一个User对象的username age--%>





public class VO {

private List userList;

public List getUserList() {return userList;}

public void setUserList(List userList) {this.userList=userList;}

@Override

public String toString() {return"VO{"+"userList="+ userList +'}';}}

@RequestMapping(value="/quick14")

@ResponseBody

public void save14(VO vo) throws IOException {System.out.println(vo);}

5.获得请求参数:获得集合类型参数2

当使用ajax提交时,可以指定contentType为json形式,那么在方法参数位置使用@RequestBody可以直接接收集合数据而无需使用POJO进行包装。

@RequestMapping(value="/quick15")

@ResponseBody

public void save15(@RequestBody List userList) throws IOException {

System.out.println(userList);}

6.获得请求参数:静态资源访问的开启

7.获得请求参数:配置全局乱码过滤器

8.获得请求参数:参数绑定注解@RequestParam

当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定。



@RequestMapping(value="/quick16")

@ResponseBody

public void save16(@RequestParam(value="name",required= false,defaultValue="itcast") String username) throws IOException {

System.out.println(username);}

9.获得请求参数:Restful风格的参数的获取

Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:

GET:用于获取资源              例:/user/1     GET : 得到 id =1 的 user

POST:用于新建资源            例:/user       POST: 新增 user

PUT:用于更新资源               例:/user/1   PUT: 更新 id=1 的 user

DELETE:用于删除资源        例:/user/1   DELETE: 删除 id=1 的 user

上述url地址/user/1中的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。地址/user/1可以写成/user/{id},占位符{id}对应的就是1的值。在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作。

http://localhost:8080/springmvc1/quick17/zhangsan

@RequestMapping(value="/quick17/{name}")

@ResponseBody

public void save17(@PathVariable(value="name") String username) throws IOException {

System.out.println(username);}

10.获得请求参数:自定义类型转换器

SpringMVC 默认已经提供了一些常用的类型转换器,例如客户端提交的字符串转换成int型进行参数设置。但是不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据自定义转换器。

public class DateConverter implements Converter {

public Date convert(String dateStr) {

//将日期字符串转换成日期对象 返回

SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd");

Date date= null;

try {date= format.parse(dateStr);

} catch (ParseException e) {e.printStackTrace();}

return date;}}

@RequestMapping(value="/quick18")

@ResponseBody

public void save18(Date date) throws IOException {

System.out.println(date);}

11.获得请求参数:获得Servlet相关API

SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:

HttpServletRequest、HttpServletResponse、HttpSession

@RequestMapping(value="/quick19")

@ResponseBody

public void save19(HttpServletRequest request, HttpServletResponse response, HttpSession

session) throws IOException {

System.out.println(request);

System.out.println(response);

System.out.println(session);}

12.获得请求参数:获得请求头信息

使用@RequestHeader可以获得请求头信息,相当于web阶段学习的request.getHeader(name)

@RequestHeader注解的属性如下:

value:请求头的名称

required:是否必须携带此请求头

@RequestMapping(value="/quick20")

@ResponseBody

public void save20(@RequestHeader(value="User-Agent",required= false) String user_agent)

throws IOException {

System.out.println(user_agent);}

使用@CookieValue可以获得指定Cookie的值

@CookieValue注解的属性如下:

value:指定cookie的名称

required:是否必须携带此cookie

@RequestMapping(value="/quick21")

@ResponseBody

public void save21(@CookieValue(value="JSESSIONID") String jsessionId) throws IOException{

System.out.println(jsessionId);}

13.获得请求参数:文件上传

表单:

名称

文件1

文件2

添加依赖:

commons-fileupload

commons-fileupload

1.3.1

commons-io

commons-io

2.3

配置多媒体解析器:

多文件上传,只需要将页面修改为多个文件上传项,将方法参数MultipartFile类型修改为MultipartFile[]即可

@RequestMapping(value="/quick23")

@ResponseBody

public void save23(String username, MultipartFile[] uploadFile) throws IOException {

System.out.println(username);

for (MultipartFile multipartFile : uploadFile) {

String originalFilename= multipartFile.getOriginalFilename();

multipartFile.transferTo(new File("C:\\upload\\"+originalFilename));}}

你可能感兴趣的:(SpringMVC的请求:获取请求参数)