[SpringMVC]第三篇:作用域传参
创始人
2024-03-06 22:48:49
0

四大域: 

 

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 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" %>

Title


<%--域中的数据--%>
requestScope :message:${requestScope.message} ,uname:${requestScope.users[0].uname} 
sessionScope :message:${sessionScope.message} ,uname:${sessionScope.users[0].uname}
applicationScope :message:${applicationScope.message} ,uname:${applicationScope.users[0].uname}
<%--请求参数--%> requestParam:${param.message}

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

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

相关内容

热门资讯

上证观察家 | “多速并行”:... 主要发达经济体的货币政策已从“同向宽松”转向“多速并行”:美联储在连续降息后趋于谨慎,英国央行在通胀...
委内瑞拉议会通过法律 应对美海... 新华社加拉加斯12月23日电(记者缪培源 田睿)委内瑞拉全国代表大会23日一致通过《保护航行和贸易自...
银河证券:券商行情稳中有进,政... 银河证券指出,国家“稳增长、稳股市”、“提振资本市场”的政策目标将持续定调板块未来走向,流动性适度宽...
三部门开展“法援志愿行”活动 本报北京12月23日电 (记者张璁)司法部、教育部、共青团中央近日印发通知,在全国组织开展并持续推进...
榆林市第二期工信领域争资争项暨... 阳光讯(记者 张壮壮)为进一步助力榆林市工信系统及重点企业精准把握惠企政策导向,帮助企业争取更多项目...
个人征信修复政策出台 警惕“收... 山西晚报·山河+讯(记者 辛戈)个人信用可获官方“免申即享”式修复,但“收费洗白”的新骗局也随之冒头...
代表人诉讼步入常态化 年内投资... 证券时报记者 孙宪超 科创信息12月23日晚公告,当日公司和相关责任人收到中国证监会湖南监管局下发的...
金鸿控股集团股份有限公司 关于... 本公司及董事会全体成员保证信息披露的内容真实、准确、完整,没有虚假记载、误导性陈述或重大遗漏。 特别...
用好“政策+改革”,海南自贸港... 12月18日,海南自由贸易港正式启动全岛封关,步入建设新阶段。 回望来时路,一组亮眼数据勾勒出海南对...
公布《行政执法监督条例》 新华社北京12月23日电 国务院总理李强日前签署国务院令,公布《行政执法监督条例》(以下简称《条例》...