五、传值

1. request和response对象是由服务器创建的。我们来使用它们
2. request对象是来获取请求消息,response对象是来设置响应消息

C得到数据后,跳转到V,并向V传递数据。进而V中可以渲染数据,让用户看到含有数据的页面

转发跳转:Request作用域

重定向跳转:Session作用域

5.1 Request和Session

//形参中 即可获得 request 和 session对象
@RequestMapping("/test1")
public String test1(HttpServletRequest request, HttpSession session){System.out.println("test1");request.setAttribute("name","张三");session.setAttribute("age",18);return "data";}

在request和session中存入值

data.jsp

name: ${requestScope.name} <br>
age: ${sessionScope.age} <br>

5.2 JSP中取值

建议:重点复习 EL JSTL

//jsp中用EL表达式 取值即可
<fmt:formatDate value="${sessionScope.user.birth}" pattern="yyyy-MM-dd"/> <br/>
${sessionScope.user.birth} <br>
${requestScope.age}

5.3 Model

springmvc常用方法 重点。

//model中的数据,会在V渲染之前,将数据复制一份给request@RequestMapping("/test2")public String test2(Model model){//model.addAttribute("gender",true);model.addAttribute("city","北京");model.addAttribute("street","长安街");return "data2";}//jsp中用EL表达式 取值即可<%--gender: ${requestScope.gender}--%>city: ${sessionScope.city} <br>street: ${sessionScope.street}


使用model.addAttribute( ,);方法存入值。 model会存一分在request中
如果想存在session中那就要在类上面添加注解@SessionAttributes(names = {“city”,“street”})
names后面存入k值

    @RequestMapping("/test2")public String test2(Model model){model.addAttribute("city","北京");model.addAttribute("street","长安街");return "data2";}

补:
// 清空所有 通过model存入session

    @RequestMapping("/test3")public String test3(SessionStatus status){// 清空所有 通过model存入sessionstatus.setComplete();return "data2";}

5.4 ModelAndView

//modelandview 可以集中管理 跳转和数据
@RequestMapping("/test4")
public ModelAndView testData(){//返回值类型为ModelAndView//新建ModelAndView对象
ModelAndView modelAndView = new ModelAndView();// 设置视图名,即如何跳转modelAndView.setViewName("forward:/hello.jsp");// 增加数据modelAndView.addObject("claz","001");return modelAndView;
}

//jsp中用EL表达式 取值即可

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>hello world <br>claz: ${requestScope.claz}
</body>
</html>

5.5 @SessionAttributes–配合model使用

  • @SessionAttributes({“gender”,“name”}) :model中的 name和gender 会存入session中

  • SessionStatus 移除session

@Controller
@SessionAttributes({"gender","name"}) // model中的 name和gender 会存入session中
public class UserController {@RequestMapping("/hello")public String hello(Model m){m.addAttribute("gender",true); // 会存入sessionmv.addObject("name","zhj"); // 会存入sessionreturn "index";}@RequestMapping("/hello2")public String hello(SessionStatus status){// 移除通过SessionAttributes存入的sessionstatus.setComplete();return "index";}
}

springmvc05 传值相关推荐

  1. Go 学习笔记(65)— Go 中函数参数是传值还是传引用

    Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...

  2. Android中Intent传值

    1 使用intent.putExtra 传递int ,String 值 传值界面 Intent intent = new Intent(Morning.this, NoonActivity.class ...

  3. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

  4. Go 学习笔记(26)— Go 习惯用法(多值赋值,短变量声明和赋值,简写模式、多值返回函数、comma,ok 表达式、传值规则)

    1. 多值赋值 可以一次性声明多个变量,并可以在声明时赋值,而且可以省略类型,但必须遵守一定的规则要求. package main import "fmt"func main() ...

  5. .net实现跨页面传值

    //一般用于向php,jsp等传值,因为跨语言session等不能共用,只有通过post提交 //下面演示的是服务器端控件提交 PostBackUrl="WebForm3.aspx" ...

  6. C++:传值与传址的区别以及引用的使用

    使用指针的好处其一:指针复制成本低. 不使用指针的高成本: #include<iostream>void fun(int x) {}int main() {int x=42;fun(x); ...

  7. C++ 函数参数传递:传值,传指针,传引用

    PS:首先理解形参   实参概念.形参是在函数定义的括号内定义的专用变量,它们的目的是保存按实参传递给它们的信息,实参被列在函数调用语句的括号内. int func(int x)//x是形参 {ret ...

  8. vue打印props的值_vue中props传值方法

    vue中props传值方法 1.开发环境 vue 2.电脑系统 windows10专业版 3.在使用 vue开发的过程中,我们经常会使用 props进行组件的传值,下面是我的分享,希望对你有所帮助! ...

  9. 关于模态对话框和非模态对话框的创建、显示,以及和父对话框的传值

    当然网上关于这方面的技术博文非常多,此处我只是进行一下小记,再加一点自己的体会,方便以后查询. 一.模态对话框 1.创建及显示 模态对话框是一种阻塞式的对话框,即没有处理完该对话框,不能对其他地方进行 ...

最新文章

  1. 盛大文学难逃“垄断”嫌疑,完美文学虎口夺食
  2. U盘、硬盘格式化数据恢复
  3. oracle rac 中的ocr,11g rac中 ocr和 votingdisk疑问
  4. easyVMAF:在自然环境下运行VMAF
  5. 惊天大神坑 关于 python-socketio 与 socket.io-client 版本兼容问题
  6. python怎么读取图像的txt标注_使用包含文件名的.txt文件读取图像数据
  7. mac nginx映射ip和端口_步骤四、nginx反向代理
  8. visual studio 2015 rc cordova -hello world
  9. python3 词频统计代码_Python词频统计代码,python
  10. HTML 超文本标记语言
  11. 华住集团股权曝光:季琦持股30.5% 雅高不再是股东
  12. Agile Scrum WaterFall通俗易懂的全过程整理
  13. 免服务器软件库源码实现超级管理动态发布会员系统卡密系统充值对接卡密网软件发布板块后台功能 软件商店1.3.1
  14. BZOJ 1022 [SHOI2008]小约翰的游戏John
  15. 如何在微信内置浏览器中开启开发者模式(f12)
  16. 基于babylon.js的3D网页游戏从零教程
  17. Keras模型中数据维度报错
  18. JavaScript基础——使用Canvas画图
  19. 视频播放网站CDN内容分发网络简单代码实现
  20. 计算机缺乏内存将无法运行,解决方案:计算机无法进入常见系统故障的内存

热门文章

  1. 多少开发人员 饿了么_饿了么CPS新社交电商,2020年的创业新风口
  2. 值传递与引用传递区别,具体表现
  3. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了! - 风平浪静如码
  4. html段落排版,美化网页段落排版的css教程
  5. nice值 linux进程,Linux进程优先级和nice值
  6. NodeJS 数组超出部分以弹出框显示。
  7. 袁永福的博客系列文章链接集合
  8. 张云飞 201771010143 《面对对象程序设计(java)》第十七周学习总结
  9. 终章-剑之魂【模拟】【贪心】
  10. ETL增量单表同步简述_根据dateTime增量