一、使用ModelAndView对象可以保存数据
注意:方法的返回类型必须是ModelAndView
@RequestMapping("/hello2")
public ModelAndView hello2(User user){
System.out.println(user+"=========");
ModelAndView mv=new ModelAndView("hello");
mv.addObject("user",user);//使用ModelAndView保存数据
return mv;//springmvc使用的是请求转发模式
}
二、使用Model对象保存数据
@RequestMapping("hello3")
public String hello3(User user,Model model){//如果方法的返回值是字符串类型,则会把返回的字符串作为对象
System.out.println(user+"=======");
model.addObject("user","张三");
return "hello3";//作为视图名解析了
}
一和二这两种方式保存数据的范围都是在request范围
三、如果跳转的路径不想经过实体解析器
@RequestMapping("hello5")
public String hello5(){
return "redirect:/hello4";//告诉服务器不经过视图解析器
}
@RequestMapping("hello6")
public String hello6(Model model){
model.addObject("age",12);
return "forward:/hello4";//redirect:告诉服务器不经过视图解析器 forward:转发到指定的路径,不经过视图解析器
}
四、controller返回json数据
①引入Jackson数据
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.4</version>
</dependency>
②在返回json的方法上加入一个注解@ResponseBody
@RequestMapping("index")
@ResponseBody//把java对象转换为json对象
public User index(){
User user=new User();
user.setUsername("张三");
user.setPassword("110");
user.setRealname("灰灰");
user.setSex("女");//从数据库中获取的数据
user.setBirthday(new Date());
return user;
}
问题是:日期格式变成了时间戳了
解决办法:在实体类
@Data
@NoArgsController
@AllArgsController
public class User{
private String username;
private String password;
private String realname;
private String sex;
@DateTimeFormat(pattern="yyyy-MM-dd")//把前端传递的参数转为该格式
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
//把java对象转换为json对象时的时间格式变为指定的格式,pattern:json的时间格式 timezone:指定时区
private Date birthday;
}