spring mvc(4)处理模型数据
处理模型数据
注:下面的代码均来自上一篇的注解代码之后的测试代码!!
ModelAndView
TestRequestMapping.java
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
String viewName="success";
ModelAndView andView = new ModelAndView(viewName);
andView.addObject("time", new Date());
return andView;
}
index.jsp
<a href="springmvc/testModelAndView">testModelAndView</a>
success.jsp;
time:${requestScope.time}

总结:SpringMVC会把ModelAndView的model中数据放入到request域对象中
Map 及 Model
Spring MVC 在内部使用了一个org.springframework.ui.Model 接口存储模型数据

目标方法可以添加Map类型(实际上是Model或者ModelMap类型)的参数
TestRequestMapping.java
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map){
map.put("name", "MrChengs");
return "success";
}
indexjsp
<a href="springmvc/testMap">testMap</a>
success.jsp
name:${requestScope.name}

@SessionAttributes
只能放在类的上面
TestRequestMapping.java
@SessionAttributes(value="user")
@Controller
@RequestMapping("/springmvc")
public class TestRequestMapping {
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String,Object> map){
User user = new User("MrChangs", "", "1287@qq.com");
map.put("user", user); return "success";
}
}
index.jsp
<a href="springmvc/testSessionAttributes">testSessionAttributes</a>
success.jsp
user requestScope:${requestScope.user}
<br>
<br>
user sessionScope:${sessionScope.user}


@ModelAttribute
<!--
模拟修改操作
1.原始数据:id=1,name=MrChengs,pw=1234,email=MrChengs@qq.com
2.密码不能修改
3.表单回显,模拟操作直接在表单填写对应的额属性值
-->
<form action="springmvc/ModelAttribute" method="post">
<input type="hidden" name="id" value="1">
<br>
name:<input type="text" name="username" value="MrChengs">
<br>
email:<input type="text" name="email" value="MrChengs@qq.com">
<br>
<input type="submit" value="submit">
</form>
//标记的方法会在每个目标方法执行之前被调用
//1.由@ModelAttribute标记的方法,会把每个目标之前被springmvc调用
//2.@MOdelAttribute注解也可以来修饰目标方法pojo类型的入参,其value属性值如下作用
//2.1)springmvc会使用value属性值在implicitModel中查找对应的对象,若存在直接传入到目标方法的入参中
//2.2)springmvc会把value为key,pojo类型对象为value,存到request中
@ModelAttribute
public void getUser(@RequestParam(value="id",required=false) Integer id,
Map<String,Object> map){
if(id != null){
User user = new User(1, "MrChengs", "1234", "MrChengs@qq.com");
System.out.println("得到一个参数");
//注意:这里的key为users,如果改为users等其他字符,等不到结果,程序可以正常的执行
//解决方法在下面的代码中
map.put("users", user);
}
}
@RequestMapping("/ModelAttribute")
public String testModelAttribute(@ModelAttribute("users")User user){
System.out.println("update:" + user);
return "success";
}
user:${requestScope.users}
如果不添加@ModelAttribut,在测试中代码的值为null


@SessionAttributes(value="user")
@Controller
@RequestMapping("/springmvc")
public class TestRequestMapping {
@RequestMapping("/ModelAttribute")
public String testModelAttribute(User user){
System.out.println("update:" + user);
return "success";
}
}
public String testModelAttribute(@ModelAttribute("acbc")User user){
十月 16, 2018 4:38:06 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [springDispatcherServlet] in context with path [/Spring_MVC_01] threw exception [Session attribute 'user' required - not found in session] with root cause
org.springframework.web.HttpSessionRequiredException: Session attribute 'user' required - not found in session
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.raiseSessionRequiredException(AnnotationMethodHandlerAdapter.java:791)
@ModelAttribute
由@SessionAttributes引发的异常
org.springframework.web.HttpSessionRequiredExcept:
Session attribute 'user' required - not found in session

如何避免@SessionAttributes引发的异常

spring mvc(4)处理模型数据的更多相关文章
- Spring MVC 之传递模型数据到视图中
类似于 JSP-Servlet 中的 req.setAttribute . req.getSession().setAttribute ... --> 最后在 JSP 用 EL 表达式取得这些数 ...
- Spring MVC中的模型数据处理
一.综述 Spring MVC 提供了以下途径来输出模型数据: 1.ModelAndView 当处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据到请求域. 2.Ma ...
- Spring MVC系列之模型绑定(SpringBoot)(七)
前言 上一节我们在SpringBoot中启用了Spring MVC最终输出了HelloWorld,本节我们来讲讲Spring MVC中的模型绑定,这个名称来源于.NET或.NET Core,不知是否恰 ...
- spring mvc 的jpa JpaRepository数据层 访问方式汇总
本文转载至:http://perfy315.iteye.com/blog/1460226 AppleFramework在数据访问控制层采用了Spring Data作为这一层的解决方案,下面就对Spri ...
- spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable
1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...
- Spring MVC基础知识整理➣数据校验与格式化
概述 将view中Form的数据提交到后台之后,后台如何验证数据的有效性?在这里Spring MVC提供了相应的Hibernate类包(hibernate-validator-4.3.1.Final. ...
- Spring mvc,jQuery和JSON数据交互
一.实验环境的搭建 1.Spring mvc jar. 导入spring mvc运行所需jar包.导入如下(有多余) 2.json的支持jar 3.加入jQuery. 选用jquery-3.0.0.m ...
- spring mvc 返回xml格式数据
1.问题 : 因为业务需要,需要发送xml格式的数据,使用spring mvc 自己解析,就不用费心去自己搞这些东西. 2.解决: 新建一个实体类,直接在实体类中添加注解即可,如下: @XmlRoot ...
- 1.4(Spring MVC学习笔记)JSON数据交互与RESTful支持
一.JSON数据交互 1.1JSON简介 JSON(JavaScript Object Notation)是一种数据交换格式. 1.2JSON对象结构 {}代表一个对象,{}中写入数据信息,通常为ke ...
随机推荐
- .net core 第二篇控制台程序项目初步学习
1. 使用vscode 创建一个控制台程序 创建项目默认创建的项目名称为父级文件夹名称 后面学习下创建的命令各个参数说明 运行项目dotnet run 其他命令SDK 命令:add 将包或引用添加到 ...
- java unsupported major.minor version 51.0 解决
1.概述 出现如题所述异常 是因为jdk高版本 编译后的class文件 运行在低版本的jre环境下(如jdk7编译 运行在jdk6环境下) 2. 解决方案 在eclipse等ide中重新编译 指定编译 ...
- 51Nod1957 有限背包计数问题
传送门 另一个传送门 这题还挺有意思…… 先贴一波出题人的题解…… (啥你说你看不见?看来你还没过啊,等着A了再看或者乖乖花点头盾好了……) 然后是我的做法……思想都是一样的,只是细节不一样而已…… ...
- <Android Framework 之路>BootAnimation(1)
介绍 开机动画,BootAnimation,就是Android手机开机郭晨各种以一个展示给用户的界面,实际是一个多个帧组成的动画,在界面上进行一帧一帧的播放,形成开机动画的效果. 本文针对Androi ...
- MFC中利用Opencv与C++抓取摄像头进行人脸识别(Mat)
原文:http://blog.csdn.net/mr_curry/article/details/51098311 第一次写博客哈哈,有些小激动,还请各位大神多多包涵~ 最近的项目需要用到人脸识别,作 ...
- 提升PPT制作效率和颜值
[大咖分享]By汤帅,PPT定制师 网站有时比素材库更有效 学会多模板整合利用 网站推荐:花瓣,officeplus,演界网,pptstore 演讲提纲 思维导图听课笔记
- Android常用的图片加载库
Android常用的图片加载库 前言:图片加载涉及到图片的缓存.图片的处理.图片的显示等.四种常用的图片加载框架,分别是Fresco.ImageLoader. Picasso. Glide. Uni ...
- 微信证书 javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
这几天在做微信退款接口,按照api写完之后,在本地测试了下没有问题,于是交给测试让他们在测试环境开测.他们说退款没有成功,感觉去查日志,发现后台报了 javax.net.ssl.SSLExceptio ...
- Element和vue框架报错提示
上面报错提示Error in render function: "TypeError:Cannot read property '$options' of undefined" 就 ...
- java实现哈弗曼树和哈夫曼树压缩
本篇博文将介绍什么是哈夫曼树,并且如何在java语言中构建一棵哈夫曼树,怎么利用哈夫曼树实现对文件的压缩和解压.首先,先来了解下什么哈夫曼树. 一.哈夫曼树 哈夫曼树属于二叉树,即树的结点最多拥有2个 ...