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")

 

posted @ 2023-03-04 14:36  在博客做笔记的路人甲  阅读(102)  评论(0编辑  收藏  举报