• [SpringMVC]第三篇:作用域传参


    四大域: 

     

    PageContext对象(不常用)

    作用域范围:当前jsp页面内有效

    request对象(经常用)

    作用域范围:一次请求内。

    作用: 解决了一次请求内的资源的数据共享问题

    session对象(登录,会话时会用)

    作用域范围:一次会话内有效。

    说明:浏览器不关闭,并且后台的session不失效,在任意请求中都可以获取到同一个session对象。

    作用:解决了一个用户不同请求的数据共享问题。

    application(ServletContext)对象(不常用)

    作用域范围:整个项目内有效。

    特点:一个项目只有一个,在服务器启动的时候即完成初始化创建无论如何获取都是同一个项目。

    作用:解决了不同用户的数据共享问题。

    1 传统方式传递数据(不推荐)


    定义Controller
     

    1.  package com.msb.controller;
    2. import com.msb.pojo.User;
    3. import com.msb.service.UserService;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.stereotype.Controller;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import javax.servlet.ServletContext;
    8. import javax.servlet.http.HttpServletRequest;
    9. import javax.servlet.http.HttpServletRequestWrapper;
    10. import javax.servlet.http.HttpSession;
    11. import java.util.List;
    12. /**
    13.  * @Author:
    14.  * @Description: MircoMessage:Mark_7001
    15.  */
    16. @Controller
    17. public class ScopeController {
    18.     @Autowired
    19.     private UserService userService;
    20.     /*
    21.     * request,session 这两个域直接放在参数列表上即可,SpringMVC就可以给我们注入
    22.     * ServletContext对象(application域) 不能直接放在参数列表上的
    23.     * */
    24.     @RequestMapping("setData")
    25.     public String setData(HttpServletRequest req,HttpSession session){
    26.         List users = userService.findAllUser();
    27.         // 向三个域中放入数据
    28.         req.setAttribute("message", "reqMessage");
    29.         req.setAttribute("users", users);
    30.         session.setAttribute("message", "sesssionMessage");
    31.         session.setAttribute("users", users);
    32.         ServletContext application = req.getServletContext();
    33.         application.setAttribute("message", "applictionMessage");
    34.         application.setAttribute("users", users);
    35.         // 跳转至showDataPage
    36.         return "/showDataPage.jsp";
    37.     }
    38. }


    定义showDataPage.jsp

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    2. <html>
    3. <head>
    4.     <title>Titletitle>
    5. head>
    6. <body>
    7. <%--域中的数据--%>
    8. requestScope :message:${requestScope.message} ,uname:${requestScope.users[0].uname} <br/>
    9. sessionScope :message:${sessionScope.message} ,uname:${sessionScope.users[0].uname} <br/>
    10. applicationScope :message:${applicationScope.message} ,uname:${applicationScope.users[0].uname} <br/>
    11. <%--请求参数--%>
    12. requestParam:${param.message}
    13. body>
    14. html>

    2使用Model传递数据(只作用于request作用域,若是想使用session域或者application域,还需使用方式一)

    1.     /*model对象addAttribute
    2.     * 主要是对请求域传递数据进行了API上的封装
    3.     * 降低controller和Servlet之间的耦合度
    4.     * 重定向下,没法使用model传递域中的数据
    5.     * model中的字符串类型的键值对信息会转换为请求参数,转发给目标组件
    6.     * */
    7.     @RequestMapping("setData2")
    8.     public String setData2(Model model){
    9.         List users = userService.findAllUser();
    10.         // 向域中放入数据
    11.         model.addAttribute("message", "reqMessage");
    12.         model.addAttribute("users", users);
    13.         // 跳转至showDataPage
    14.                                                                                 // return "forward:/showDataPage.jsp";
    15.         return "redirect:/showDataPage.jsp";
    16.     }


    3使用ModelAndView传递数据(只作用于request作用域,若是想使用session域或者application域,还需使用方式一)


     

    1. /*
    2.     * ModelAndView
    3.     * Model数据
    4.     * View 视图
    5.     * */
    6.     @RequestMapping("setData3")
    7.     public ModelAndView setData3(){
    8.         ModelAndView mv=new ModelAndView();
    9.         Map model = mv.getModel();
    10.         // 向request域中放入数据
    11.         List users = userService.findAllUser();
    12.         model.put("message", "reqMessage");
    13.         model.put("users", users);
    14.         // 设置视图
    15.         //mv.setViewName("forward:/showDataPage.jsp");
    16.         mv.setViewName("redirect:/showDataPage.jsp");
    17.         return mv;
    18.     }

  • 相关阅读:
    第十六章总结:反射和注解
    maven的.m2文件夹
    JS循环(for、while)和分支(if、switch)语句
    示例:WPF中TreeView自定义TreeNode泛型绑定对象来实现级联勾选
    Mysql基本命令操作
    金融行业的CFA、CPA和FRM你了解吗?中国人民大学与加拿大女王大学金融硕士需要吗?
    【愚公系列】2022年12月 .NET CORE工具案例-BackgroundService实现任务调度
    【洛谷 P1328】[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题解(模拟+向量)
    ROS从入门到精通2-8:Gazebo仿真之快速生成二维地图真值
    Rust 语法
  • 原文地址:https://blog.csdn.net/listeningdu/article/details/128129404