SpringMVC:各个响应中的数据流转如何实现?
依赖request、session、application对象进行数据流转。
一、普通流转
直接从三大对象(request、session、application)中存入、取出数据。
例子:
此响应器会把数据放入指定对象中,然后进行请求转发到login响应器。
@RequestMapping("toLogin")
public ModelAndView toLogin(HttpServletRequest request, HttpSession session) {
ModelAndView mav = new ModelAndView("forward:/login");
//设置参数
request.setAttribute("req", "req 的传值");
session.setAttribute("session", "session 的传值");
request.getServletContext().setAttribute("application","application 的传值");
return mav;
}
login响应器获取到数据,打印到控制台。
@RequestMapping("login")
public ModelAndView login(HttpServletRequest request, HttpSession session) {
ModelAndView mav = new ModelAndView("login");
//获取参数
System.out.println(request.getAttribute("req"));
System.out.println(session.getAttribute("session"));
System.out.println(request.getServletContext().getAttribute("application"));
return mav;
}
快速获取session对象内的数据
使用SessionAttribute注解实现。
例子:
存入数据。
@RequestMapping("toLogin")
public ModelAndView toLogin(HttpSession session) {
ModelAndView mav = new ModelAndView("forward:/login");
//设置参数
session.setAttribute("love","this is love");
return mav;
}
取出数据。
@RequestMapping("login")
public ModelAndView login(@SessionAttribute String love) {
ModelAndView mav = new ModelAndView("login");
//获取参数
System.out.println(love);
return mav;
}
二、使用Map
实际上是把map集合放入request对象中了。
例子:
存入数据。
@RequestMapping("toLogin")
public ModelAndView toLogin(Map<String,String> map) {
ModelAndView mav = new ModelAndView("forward:/login");
//设置参数
map.put("data","可是这和我是一个冷酷的复读机又有什么关系呢?");
return mav;
}
取出数据。
@RequestMapping("login")
public ModelAndView login(HttpServletRequest request) {
ModelAndView mav = new ModelAndView("login");
//获取参数
System.out.println(request.getAttribute("data"));
return mav;
}
三、使用ModelAndView对象
实际上也是把数据放入request对象中。
例子:
存入数据。
@RequestMapping("toLogin")
public ModelAndView toLogin() {
ModelAndView mav = new ModelAndView("forward:/login");
//设置参数
mav.addObject("love","this is love");
return mav;
}
取出数据。
@RequestMapping("login")
public ModelAndView login(HttpServletRequest request) {
ModelAndView mav = new ModelAndView("login");
//获取参数
System.out.println(request.getAttribute("love"));
return mav;
}
四、使用Model对象。
实际上也是把数据放入request对象中。
存:model.addAttribute("love","this is love");
取:request.getAttribute("love")

浙公网安备 33010602011771号