一、SpringMVC 作用域傳值的幾種方式
1 使用原生Servlet
1.1 在 HandlerMethod 參數中添加作用域對象
1.1.1 ServletContext不能在方法參數中獲取,只能在request中獲取
@Controller public class DemoController { @RequestMapping("demo") public String demo(HttpServletResponse resp,HttpServletRequest req,HttpSession session){ //Request req.setAttribute("request", "這是HttpServletRequest"); //Session session.setAttribute("session","這是HttpSession"); HttpSession session2=req.getSession(); session2.setAttribute("session2","這是HttpSession22"); //application ServletContext context = req.getServletContext(); context.setAttribute("servletcontext","這是ServletContext"); return "/index.jsp"; } }
2 使用Map集合
2.1 把map中內容放在 request 作用域中
2.2 spring 會對map集合通過 spring中的 class org.springframework.validation.support.BindingAwareModelMap 進行實例化
@RequestMapping("demo2") public String demo2(Map<String,Object> map){ System.out.println(map.getClass()); map.put("map","天使"); return "/index.jsp"; }
index.jsp中
map:::${requestScope.map} 進行獲取 (可以不使用requestScope)
3 使用SpringMVC 中的Model接口
3.1 本質還是 request作用域進行傳值,(Model存在的意義就是替換request)
3.2 把內容最終放入到request作用域中
@RequestMapping("demo3") public String demo3(Model model){ model.addAttribute("model","這是Model的值"); return "/index.jsp"; }
index.jsp 中
model:::${requestScope.model} 獲取
4 使用SpringMVC中ModelAndView 類
@RequestMapping("demo4") public ModelAndView demo4(){ ModelAndView mac=new ModelAndView("/index.jsp"); mac.addObject("mav","天使的ModelAnd view"); return mac; }
index.jsp中
modelandview::${requestScope.mav}