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

news/2024/5/2 8:19:58/文章来源:https://blog.csdn.net/listeningdu/article/details/128129404

四大域: 

 

PageContext对象(不常用)

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

request对象(经常用)

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

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

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

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

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

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

application(ServletContext)对象(不常用)

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

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

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

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


定义Controller
 

 package com.msb.controller;
import com.msb.pojo.User;
import com.msb.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpSession;
import java.util.List;
/*** @Author: * @Description: MircoMessage:Mark_7001*/
@Controller
public class ScopeController {@Autowiredprivate UserService userService;/** request,session 这两个域直接放在参数列表上即可,SpringMVC就可以给我们注入* ServletContext对象(application域) 不能直接放在参数列表上的* */@RequestMapping("setData")public String setData(HttpServletRequest req,HttpSession session){List<User> users = userService.findAllUser();// 向三个域中放入数据req.setAttribute("message", "reqMessage");req.setAttribute("users", users);session.setAttribute("message", "sesssionMessage");session.setAttribute("users", users);ServletContext application = req.getServletContext();application.setAttribute("message", "applictionMessage");application.setAttribute("users", users);// 跳转至showDataPagereturn "/showDataPage.jsp";}
}


定义showDataPage.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%--域中的数据--%>
requestScope :message:${requestScope.message} ,uname:${requestScope.users[0].uname} <br/>
sessionScope :message:${sessionScope.message} ,uname:${sessionScope.users[0].uname} <br/>
applicationScope :message:${applicationScope.message} ,uname:${applicationScope.users[0].uname} <br/>
<%--请求参数--%>
requestParam:${param.message}
</body>
</html>

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

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


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


 

 /** ModelAndView* Model数据* View 视图* */@RequestMapping("setData3")public ModelAndView setData3(){ModelAndView mv=new ModelAndView();Map<String, Object> model = mv.getModel();// 向request域中放入数据List<User> users = userService.findAllUser();model.put("message", "reqMessage");model.put("users", users);// 设置视图//mv.setViewName("forward:/showDataPage.jsp");mv.setViewName("redirect:/showDataPage.jsp");return mv;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_228537.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内容、文档和流程数字化如何支持精益原则

内容、文档和流程数字化如何支持精益原则 无论您身处哪个行业&#xff0c;想要在业务中取得真正的成功就必须把客户放在所有决策的中心位置&#xff0c;以便您能够给客户提供最佳服务。同时公司以最高效的方式向前发展也很重要。幸运的是&#xff0c;有一种方法可以确保两者兼而…

Java企业微信对接

最近项目中要对接企业微信&#xff0c;实现通讯录数据同步&#xff0c;即在企业端添加编辑删除用户&#xff0c;部门数据要同步到微信端&#xff0c;同时微信端添加编辑删除用户&#xff0c;部门数据要同步到企业端&#xff0c;实现数据同步功能&#xff0c;需要调用企业微信AP…

五款朴实无华却又能极大提升办公效率的软件

最近后台收到好多小伙伴的私信&#xff0c;今天继续推荐五款小工具&#xff0c;都是免费使用的&#xff0c;大家可以去试试看。 1.光追动画制作——Luxion KeyShot Luxion KeyShot是一款互动性的光线追踪与全域光渲染3D渲染与动画制作软件&#xff0c;内置丰富多样的材质&…

mybatis实战:三、mybatis多表查询的映射

依照上一期的继续 1.UserMapper.xml 除了直接对应基本数据类类型、表的实体类&#xff0c;还可能用到多表查询。 <select id"selectRolesByUserId" resultType"tk.mybatis.simple.model.SysRole">select r.id, r.role_name roleName, r.enabled, r…

Typora导出Word

1.Typora导出Word配置 1.访问GitHub&#xff1a; https://github.com/jgm/pandoc/releases/tag/2.11.3.2https://github.com/jgm/pandoc/releases/tag/2.11.3.2 2.下载对应的文件 3.到本地安装Typora目录下解压 4.配置环境变量 我的电脑–属性–高级系统设置–高级–环境变量…

Linux零基础入门(二)Linux基础命令

Linux零基础入门&#xff08;二&#xff09;Linux基础命令前言Linux基础命令一 Linux的目录结构1 Linux路径的描述方式二 Linux命令入门1 Linux命令基础格式2 ls命令3 HOME目录和工作目录4 ls命令的参数ls 命令的 -a选项ls命令的 -l选项ls命令选项的组合使用ls选项和参数的组合…

搭建Docker+SRS服务器实现推流拉流的效果

最初的一个想法&#xff0c;是针对当前的网络电视去的&#xff0c;很多网络电视买回家&#xff0c;还要充很多会员&#xff0c;甚至跌入连环坑。我想给妈妈买一台电视&#xff0c;想把我自己收集的电影电视剧做成一个影视库&#xff0c;通过搭建家庭影院服务器&#xff0c;然后…

Fiddler抓包工具是最强大最好用的 Web 调试工具之一

Fiddler是最强大最好用的Web调试工具之一&#xff0c;它能记录所有客户端和服务器的http和https请求&#xff0c;允许你监视&#xff0c;设置断点&#xff0c;甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说&#xff0c;都有很大的帮助。 目录 Fiddler的基本介绍 …

Java+JSP+MySQL基于SSM的医院挂号就诊系统-计算机毕业设计

项目介绍 随着计算机科技的快速发展&#xff0c;很多地方都实现了自动化管理&#xff0c;医院也不例外。在大多数医院&#xff0c;无论是挂号处&#xff0c;还是取药的窗口&#xff0c;都会看到有很长的队伍&#xff0c;很显然这样会让患者就医的过程中浪费太多的时间。其次&a…

Kamiya丨Kamiya艾美捷AREG酶联免疫吸附试验原理

Kamiya艾美捷AREG酶联免疫吸附试验预期用途&#xff1a; 该试剂盒是一种用于体外定量测量大鼠AREG的夹心酶免疫测定法血清、血浆和其他生物流体。仅供研究使用。不用于诊断程序。 存储&#xff1a; 所有试剂应按照小瓶上的标签保存。校准器、检测试剂A、检测试剂B和96孔带板应…

【正点原子FPGA连载】第二十四章 双路高速DA实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十四章 双路…

Linux 内存虚实内存映射

Linux 内存虚实内存映射TOC 以前关于虚拟地址和物理地址的学习只是在书本上&#xff0c;今天在实际的开发板上实践了一下 代码&#xff1a; #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> #include <linux/sched.h #i…

H2N-Gly-Gly-βAla-COOH, 42538-53-4

用作多肽和蛋白质亚硝化的低分子模型化合物。cas编号(净):627-74-7。 编号: 200129中文名称: 三肽Gly-Gly-βAlaCAS号: 42538-53-4单字母: H2N-GG-βA-OH三字母: H2N-Gly-Gly-βAla-COOH氨基酸个数: 3分子式: C7H13N3O4平均分子量: 203.2精确分子量: 203.09等电点(PI): 6.11pH7…

百数低代码开发平台助力生产管理:制造管理系统

随着全球经济化与信息化&#xff0c;制造企业的生产管理系统的建立对于制造业企业的信息化以及生产的智能化具有重要的意义&#xff0c;同时也是促进现代工业进步和发展的基础条件之一。我国制造业属于传统行业&#xff0c;凭借生产规模大且劳动力资源丰富在全世界拥有着一定地…

学习Hadoop(一)——搭建hadoop集群

最近开始学习大数据的相关知识&#xff0c;要学习大数据就不得不提到Hadoop。 一般来说学习一门新的知识&#xff0c;很多都是先理论再实践 我则不然&#xff0c;先实践&#xff0c;再了解理论 目录一、VM网络设置二、安装Centos72.1 网络配置2.2 设置主机名2.3 hosts设置2.4…

HighTec 工程配置详解

HighTec 工程配置详解 编译配置 构建配置管理器 管理器内&#xff0c;可以创建各种不同用途的配置项。例如用于生产工程的 ROM 配置&#xff0c;用于调试工程的 Debug 配置。对于每个配置&#xff0c;所设置的工程属性是单独分开的&#xff0c;互相之间没有影响。 打开构建配…

nvcc编译器之设备和主机独立编译(chapter 6)

目录 6. CUDA中的独立编译 6.1 单独编译时的代码改动 6.2 nvcc独立编译选项 6.3 库 6.4 示例 6.5 分布编译优化 6.6 独立编译的潜在问题 6. CUDA中的独立编译 在5.0版本之前&#xff0c;CUDA不支持分开编译&#xff0c;因此CUDA代码不能访问跨文件&#xff08;编译单元&…

python专属的Remote Produce Call框架:rpyc

python专属的Remote Produce Call框架&#xff1a;rpyc python生态里面的rpc框架很多&#xff0c;比较出名的有grpc和thrift&#xff0c;但是这两个框架在python体系里面用起来相对比较复杂&#xff0c;下面介绍一个极其简洁轻量级的纯python实现的RPC框架&#xff1a;rpyc。 …

【研发工具】Centos下搭建轻量级内网FTP服务器

1 前言 vsftpd是一款非常小巧、高性能、稳定性好、安全易用的Linuxt环境下的的FTP服务器软件。 vsftpd 名称是取自 very secure FTP daemon 的缩写&#xff0c;可以在类UNIX类操作系统上运行。 2 部署 通常情况下可以在线安装, # centos / Redhat 操作系统下 $ yum -y ins…

使用vite 搭建vue 3的项目

一、目标&#xff1a; 使用vite搭建一个Vue 3 的项目&#xff0c;并启动成功。 二、准备工作 首先你要有Node.js、VSCode编辑器、Chrome浏览器 关于下载的问题Node.js可以去官网下载 链接&#xff1a;http://nodejs.cn/download/ 下载左边的长期支持版本就好&#xff0c;最新版…