• 中文
    • English
  • 注册
  • 查看作者
    • SpringMVC:向request作用域存储数据

      一.  数据准备

      首先在jsp文件中,显示request作用域中的指定数据:

      <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
      <!DOCTYPE html>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
      <h1> ${requestScope.user}</h1>
      
      </body>
      </html>

      二:使用Map

      我们将map作为方法的参数,然后在方法中把数据直接put进map,即可把数据存入request作用域。

      package io.zhangjia.springmvc.controller;
      
      import io.zhangjia.springmvc.controller.entity.User;
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      
      import java.util.Map;
      
      @Controller
      public class Test {
          @RequestMapping("/test")
          public String test(User user, Map<String, Object> map) {
              System.out.println("user = [" + user + "]");
              map.put("user", user);
              return "test";
          }
      }

      三:使用Model

      使用Model的方法也很简单,只需要将Model作为参数传入test方法,然后调用addAttribute方法即可

      package io.zhangjia.springmvc.controller;
      
      import io.zhangjia.springmvc.controller.entity.User;
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.RequestMapping;
      
      import java.util.Map;
      
      @Controller
      public class Test {
          @RequestMapping("/test")
          public String test(User user, Model model) {
              System.out.println("user = [" + user + "]");
              model.addAttribute("user", user);
              return "test";
          }
      }

      四:使用ModelAndView

      使用ModelAndView之前,需要先将test方法的返回值修改为ModelAndView,而且test方法中不需要传入额外的参数。

      setViewName(“test”)相当于上面几种方法中的return “test”

      package io.zhangjia.springmvc.controller;
      
      import io.zhangjia.springmvc.controller.entity.User;
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.servlet.ModelAndView;
      
      import java.util.Map;
      
      @Controller
      public class Test {
       
          @RequestMapping("/test")
          public ModelAndView test(User user) {
              System.out.println("user = [" + user + "]");
              ModelAndView modelAndView = new ModelAndView();
              modelAndView.setViewName("test"); //相当于 return "test";
              modelAndView.addObject("user", user);
              return modelAndView;
          }
      }

      五:使用HttpServletRequest

      这种方法也是我们在没有学习Spring之前所采用的的最原始的方法,只需要将HttpServletRequest作为参数传入test方法,即可使用request,如果需要获取Session等资源,都可以采用这种方法

      package io.zhangjia.springmvc.controller;
      
      import io.zhangjia.springmvc.controller.entity.User;
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.servlet.ModelAndView;
      
      import javax.servlet.http.HttpServletRequest;
      import java.util.Map;
      
      @Controller
      public class Test {
         
          @RequestMapping("/test")
          public String test(User user, HttpServletRequest request) {
              System.out.println("user = [" + user + "]");
              request.setAttribute("user", user);
              return "test";
          }
      }

      六.  总结

      1.  Map

      • 添加 Map<String, Object> map 作为形参

      • 将需要存入request作用域的数据put进map中: map.put(“xxx”, xxx),即可完成存入

      2.  Model

      • 添加  Model model 作为形参

      • 使用model.addAttribute(“xxx”, xxxx),即可将需要存入request作用域的数据存入

      3.  ModelAndView

      • 不需要添加形参,但是需要修改方法的返回类型为ModelAndView

      • 新建Model对象:ModelAndView modelAndView = new ModelAndView();

      • 使用modelAndView.addObject(“xxx”, xxxx)即可将需要存入request作用域的数据存入

      4.  HttpServletRequest

      • 添加 HttpServletRequest request 作为形参

      • 使用request.setAttribute(“xxx”, xxxx)即可将需要存入request作用域的数据存入

    • 0
    • 0
    • 0
    • 2k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: