SpringMVC框架-域对象共享数据

1.使用ServletAPI向request域对象共享数据

@Controller
public class ScopeController {
 @RequestMapping("/testServletAPI")
 public String testServletAPI(HttpServletRequest request) {
     request.setAttribute("testScope", "hello,servletAPI");
     return "success";  // success页面会显示hello,servletAPI
 }
}
// success.html
<body>
    <p th:text="${testScope}"></p>
    <p th:text="${session.testSessionScope}"></p>
    <p th:text="${application.testApplicationScope}"></p>
</body>
// index.html
<body>
    <a th:href="@{/testServletAPI}">通过ServletAPI向request域对象共享数据</a>
    <a th:href="@{/testModelAndView}">通过ModelAndView向request域对象共享数据</a>
    <a th:href="@{/testModel}">通过Model向request域对象共享数据</a>
    <a th:href="@{/testMap}">通过Map向request域对象共享数据</a>
    <a th:href="@{/testSession}">通过ServletAPI向Session域对象共享数据</a>
    <a th:href="@{/testApplication}">通过ServletAPI向Application域对象共享数据</a>
</body>

2.使用ModelAndView向request域对象共享数据***

@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
 /**
     * ModelAndView有Model和View的功能
     * Model主要用于向请求域共享数据
     * View主要用于设置视图,实现页面跳转
     */
    ModelAndView mav = new ModelAndView();
    //向请求域共享数据
    mav.addObject("testScope", "hello,ModelAndView");
    //设置视图,实现页面跳转
    mav.setViewName("success");
    return mav;  // 返回给前端控制器进行解析
}

tips:

  • 使用请求request域对象的六种方法时,前端控制器都会使用成一个ModelAndView对象把需要跳转的页面(即view)和共享数据(即model)进行封装:
// DispatcherServlet.java中的535行
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

3.使用Model向request域对象共享数据

@RequestMapping("/testModel")
public String testModel(Model model){
    model.addAttribute("testScope", "hello,Model");
    return "success";
}

4.使用map向request域对象共享数据

@RequestMapping("/testMap")
public String testMap(Map<String, Object> map){
    map.put("testScope", "hello,Map");
    return "success";
}

5.使用ModelMap向request域对象共享数据

@RequestMapping("/testModelMap")
public String testModelMap(ModelMap modelMap){
    modelMap.addAttribute("testScope", "hello,ModelMap");
    return "success";
}

6.Model、ModelMap、Map的关系

  • 通过System.out.println(map/model/modelMap.getClass().getName());会打印org.springframework.validation.support.BindingAwareModelMap

在这里插入图片描述


7.向session域共享数据

@RequestMapping("/testSession")
public String testSession(HttpSession session){
    session.setAttribute("testSessionScope", "hello,session");
    return "success";
}

8.向application域共享数据

@RequestMapping("/testApplication")
public String testApplication(HttpSession session){
    ServletContext application = session.getServletContext();
    application.setAttribute("testApplicationScope", "hello,application");
    return "success";
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值