Contoller中的业务方法的参数名称要与请求的参数的name一直,参数值会自动映射匹配
@RequestMapping("/quick11")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save11(String username ,int age) throws IOException {
System.out.println(username);
System.out.println(age);
}
package zcf.daomian;
public class User {
private String username;
private int age;
public User(String username, int age) {
this.username = username;
this.age = age;
}
public User() {
}
public void setUsername(String username) {
this.username = username;
}
public void setAge(int age) {
this.age = age;
}
public String getUsername() {
return username;
}
public int getAge() {
return age;
}
}
@RequestMapping("/quick12")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save12(User user) throws IOException {
System.out.println(user);
}
Conroller中的业务方法数组名称与请求参数的name一直,参数会自动映射匹配
@RequestMapping("/quick13")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save13(String[] strs) throws IOException {
System.out.println(strs);
}
获得一个集合参数时候,要将集合参数包装到一个POJO中才可以。
package zcf.daomian;
import java.util.List;
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("/quick14")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save14(VO vo) throws IOException {
System.out.println(vo);
}
使用ajax提交,可以指定contentType为json格式,那么在方法参数位置使用@RequestBody可以直接收集集合数据无需使用pojo进行包装
@RequestMapping("/quick14")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save14(@RequestBody List userList) throws IOException {
System.out.println(userList);
}
post请求是,中文会出现乱码,可以设置一个过滤器进行编码过滤
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
当请求的参数名称和controller的业务方法名称不一致时,就需要通过@RequestParam注解显示的绑定
@RequestMapping("/quick16")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save16(@RequestParam(value = "name") String username ,int age) throws IOException {
System.out.println(username);
System.out.println(age);
}
@RequestMapping("/quick16")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save16(@RequestParam(value = "name",required = false,defaultValue = "张三") String username ,int age) throws IOException {
System.out.println(username);
System.out.println(age);
}
自定义类型转化器的开放步骤
package zcf.converter;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DataConverter implements Converter {
@Override
public Date convert(String dataStr) {
Date date = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
date = format.parse(dataStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
支持原始的ServletAPI对象作为控制器方法的参数进行注入,常用对象如下:
@RequestMapping("/quick19")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save19(HttpServletResponse response, HttpServletRequest request, HttpSession session) throws IOException {
System.out.println(response);
System.out.println(request);
System.out.println(session);
}
使用@RequestHeader可以获取请求头信息
@RequestHeader属性如下:
@RequestMapping("/quick20")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save20(@RequestHeader(value = "User-Agent",required = false) String user_agent) throws IOException {
System.out.println(user_agent);
}
使用 @CookieValue可以获取指定Cookie的值
@CookieValue注释的属性
@RequestMapping("/quick21")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
// 期望SpringMVC自动将User转化为json格式
public void save20(@CookieValue(value = "JESSIONID",required = false) String jessionId) throws IOException {
System.out.println(jessionId);
}
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.6
@RequestMapping("/quick22")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
public void save22(String username, MultipartFile uploadFile) throws IOException {
System.out.println(username);
System.out.println(uploadFile);
// 获得上传文件名称
String originalFilename = uploadFile.getOriginalFilename();
uploadFile.transferTo(new File("C:\\upload\\"+originalFilename));
}
@RequestMapping("/quick23")
@ResponseBody//告知springMVC不是视图跳转,直接进行数据相应
public void save23(String username, MultipartFile[] uploadFile) throws IOException {
System.out.println(username);
System.out.println(uploadFile);
// 获得上传文件名称
for (MultipartFile multipartFile:
uploadFile) {
String originalFilename = multipartFile.getOriginalFilename();
multipartFile.transferTo(new File("C:\\upload\\"+originalFilename));
}
}