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")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2020-03-04 C语言实现计算“已经活了多少天”