一. 数据准备
首先在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作用域的数据存入
请登录之后再进行评论