学习目标:
- 掌握基于SpringMVC获取请求参数与响应json数据操作
- 熟练应用基于REST风格的请求路径设置与参数传递
- 能够根据实际业务建 立前后端开发通信协议并进行实现
- 基于SSM整合技术开发任意业务模块功能
学习内容:
- 掌握基于SpringMVC获取请求参数与响应json数据操作
学习时间:
- 周二8:30–18:00
学习产出:
1、SpringMVC概念
SpringMVC是一种基于Java实现MVC模型的轻量级Web框架—表现层
2、设置请求映射路径
设置请求名作为路径前缀
@Controller
@RequestMapping("/user")//一级路径
public class UserController {
@RequestMapping("/save")//二级路径
//设置当前操作的返回值类型
@ResponseBody
public String save(){
System.out.println("user save...");
return "{'module':'user save'}";
}
@RequestMapping("/delet")//二级路径
@ResponseBody
public String delet(){
System.out.println("user delet...");
return "{'module':'user delet'}";
}
}
3、springmvc解决POST中文乱码
//在config的container里写
//乱码处理
@Override
protected Filter[] getServletFilters(){
CharacterEncodingFilter filter=new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
return new Filter[]{filter};
}
4、参数传递
1)普通参数
// 普通参数:请求参数名与形参名不同---@RequestParam
@RequestMapping("/commonParamDifferentName")//二级路径
@ResponseBody
public String commonParamDifferentName(@RequestParam("name") String userName,int age){
System.out.println("普通参数传递 userName"+userName);
return "{'module':'common Param Different Name'}";
}
2)POJO类型参数
// POJO参数
@RequestMapping("/pojoParam")//二级路径
@ResponseBody
public String pojoParam(User user){
System.out.println("pojo参数传递 user"+user);
return "{'module':'pojo Param '}";
}
3)嵌套POJO类型参数
4)数组类型参数
// 数组参数
@RequestMapping("/arrayParam")//二级路径
@ResponseBody
public String arrayParam(String[] likes){
System.out.println("数组参数传递 likes"+ Arrays.toString(likes));
return "{'module':'array Param '}";
}
5)集合类型参数
// 集合参数
@RequestMapping("/listParam")//二级路径
@ResponseBody
public String listParam(@RequestParam List<String> likes){
System.out.println("集合参数传递 likes"+ likes);
return "{'module':'list Param '}";
}
5、json数据传递参数
1)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
@Configuration
@ComponentScan("com.it.controller")
@EnableWebMvc
public class SpringMvcConfig {
}
3)
4)
// 集合json参数--@RequestBody
@RequestMapping("/listParamForJson")//二级路径
@ResponseBody
public String listParamForJson(@RequestBody List<String> likes){
System.out.println("集合json传递 likes"+ likes);
return "{'module':'list Param json '}";
}
5)
// 日期时间型参数
@RequestMapping("/dateParam")//二级路径
@ResponseBody
public String dateParam(Date date,
@DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
System.out.println("传递参数 date1(yyyy-MM-dd)"+ date1);
System.out.println("传递参数 date2(yyyy/MM/dd HH:mm:ss)"+ date2);
return "{'module':'date Param'}";
}
6、@RequestBody与@RequestParam区别
区别
- @RequestParam用于接收ur1地址传参,表单传参[ application/ x-Www- form-urlencoded ]
- @RequestBody用于接收json数据 [application/json]
应用
- 后期开发中, 发送json格式数据为主, @RequestBody 应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
7、响应
1)响应页面、跳转页面
//响应页面、跳转页面
@RequestMapping("/toJumpPage")
public String toJumpPage(){
System.out.println("跳转页面");
return "page.jsp";
}
2)响应文本数据
//响应文本数据
@ResponseBody
@RequestMapping("/toText")
public String toText(){
System.out.println("返回文本数据");
return" response text";
}
3)响应POJO对象
//响应POJO对象
@ResponseBody
@RequestMapping("/toJsonPOJO")
public User toJsonPOJO(){
System.out.println("返回pojo对象");
User user=new User();
user.setName("itcase");
user.setAge(15);
return user;
}