SpringMVC addFlashAttribute的分析与使用示例
2017-07-07 15:02
375 查看
阅读目录
使用
Flash Attribute 实例
第1步: 需要的 JAR 和项目结构
第2步: Spring 配置
第3步: Spring Controller
– RedirectAttributes
第4步: View 层
Demo:
下载源代码
Spring MVC 3.1版本加了一个很有用的特性,Flash属性,它能解决一个长久以来缺少解决的问题,一个POST/Redirect/GET模式问题。
正常的MVC Web应用程序在每次提交都会POST数据到服务器。一个正常的Controller (被注解 @Controller标记)从请求获取数据和处理它 (保存或更新数据库)。一旦操作成功,用户就会被带到(forward)一个操作成功的页面。传统上来说,这样的POST/Forward/GET模式,有时候会导致多次提交问题. 例如用户按F5刷新页面,这时同样的数据会再提交一次。
为了解决这问题, POST/Redirect/GET 模式被用在MVC应用程序上.
一旦用户表单被提交成功, 我们重定向(Redirect)请求到另一个成功页面。这样能够令浏览器创建新的GET请求和加载新页面。这样用户按下F5,是直接GET请求而不是再提交一次表单。
Image credit: Wikipedia
虽然这一方法看起来很完美,并且解决了表单多次提交的问题,但是它又引入了一个获取请求参数和属性的难题. 通常当我们生成一次http重定向请求的时候,被存储到请求数据会丢失,使得下一次GET请求不可能访问到这次请求中的一些有用的信息.
Flash attributes 的到来就是为了处理这一情况. Flash attributes 为一个请求存储意图为另外一个请求所使用的属性提供了一条途径. Flash attributes 在对请求的重定向生效之前被临时存储(通常是在session)中,并且在重定向之后被立即移除.
为了这样做, Flash 特性使用了两个集合. FlashMap 被用来管理 flash attributes 而 FlashMapManager 则被用来存储,获取和管理 FlashMap 实体.
对于每一次请求一个 “input” flash map 会被创建,来存储来自任何之前请求的 flash attribute 还有一个 “output” flash map 会被创建,来存储任何我们存储在这个请求中的,之后的请求参数.
?
这些都完成之后,Flash attribute 就会自动设为“开启”,以供使用了。只需在你的 Spring controller 方法中加入RedirectAttributes redirectAttributes。
?
addFlashAttribute 方法会自动向 output flash map 中添加给定的参数,并将它传递给后续的请求。
我们来看看一个使用 Flash attribute 来完成 POST/Redirect/GET 并传递一些信息的完整实例吧。
回到顶部
回到顶部
?
或者,你可以下载以下 JAR 文件,然后把它们放在 /WEB-INF/lib 文件夹下。
回到顶部
web.xml
?
然后,spring-servlet 使用 mvc:annotation-driven 来支持 mvc ,并且会扫描项目中的 context:component-scan 标签。
spring-servlet.xml
?
回到顶部
Customer.java
?
CustomerController 类有3个方法。showForm 方法对应 URL /form ,用来显示 Add New Customer 表单。addCustomer 方法对应 URL /addcustomer ,用来处理
POST 请求。
CustomerController.java
?
注意我们在 addCustomer 方法中是如何使用 redirectAttributes 参数来添加 flash attribute 的。并且,我们是用 addFlashAttribute 方法来设置新的参数为 flash attribute。
回到顶部
add_customer.jsp
?
show_customer.jsp 简单地显示客户的名和姓,以及用 flash attributes 设置的成功信息。
show_customer.jsp
?
URL: http://localhost:8080/SpringMVC_Flash_Attribute_Maven_example/form.html
(3.5 MB)
本文地址:http://www.oschina.net/translate/spring-mvc-flash-attribute-example
原文地址:http://viralpatel.net/blogs/spring-mvc-flash-attribute-example/
使用
Flash Attribute 实例
第1步: 需要的 JAR 和项目结构
第2步: Spring 配置
第3步: Spring Controller
– RedirectAttributes
第4步: View 层
Demo:
下载源代码
Spring MVC 3.1版本加了一个很有用的特性,Flash属性,它能解决一个长久以来缺少解决的问题,一个POST/Redirect/GET模式问题。
正常的MVC Web应用程序在每次提交都会POST数据到服务器。一个正常的Controller (被注解 @Controller标记)从请求获取数据和处理它 (保存或更新数据库)。一旦操作成功,用户就会被带到(forward)一个操作成功的页面。传统上来说,这样的POST/Forward/GET模式,有时候会导致多次提交问题. 例如用户按F5刷新页面,这时同样的数据会再提交一次。
为了解决这问题, POST/Redirect/GET 模式被用在MVC应用程序上.
一旦用户表单被提交成功, 我们重定向(Redirect)请求到另一个成功页面。这样能够令浏览器创建新的GET请求和加载新页面。这样用户按下F5,是直接GET请求而不是再提交一次表单。
Image credit: Wikipedia
虽然这一方法看起来很完美,并且解决了表单多次提交的问题,但是它又引入了一个获取请求参数和属性的难题. 通常当我们生成一次http重定向请求的时候,被存储到请求数据会丢失,使得下一次GET请求不可能访问到这次请求中的一些有用的信息.
Flash attributes 的到来就是为了处理这一情况. Flash attributes 为一个请求存储意图为另外一个请求所使用的属性提供了一条途径. Flash attributes 在对请求的重定向生效之前被临时存储(通常是在session)中,并且在重定向之后被立即移除.
为了这样做, Flash 特性使用了两个集合. FlashMap 被用来管理 flash attributes 而 FlashMapManager 则被用来存储,获取和管理 FlashMap 实体.
对于每一次请求一个 “input” flash map 会被创建,来存储来自任何之前请求的 flash attribute 还有一个 “output” flash map 会被创建,来存储任何我们存储在这个请求中的,之后的请求参数.
使用
要想在你的 spring MVC 应用中使用 Flash attribute,要用 3.1 版本或以上。并且要在 spring-servlet.xml 文件中加入 mvc:annotation-driven。?
?
我们来看看一个使用 Flash attribute 来完成 POST/Redirect/GET 并传递一些信息的完整实例吧。
回到顶部
Flash Attribute 实例
下面的应用向用户显示一个表单。当用户填完数据,并提交表单之后,页面会重定向到另一个显示成功信息的页面。在这个重定向的新页面中,会显示用户刚才输入的信息。回到顶部
第1步: 需要的 JAR 和项目结构
如果你用 Maven 来做依赖管理,用下面的 dependencies 来添加 Spring 3.1 MVC 的支持。?
回到顶部
第2步: Spring 配置
要为 web 项目添加 Spring 支持,需要在 web.xml 中添加 DispatcherServlet 。web.xml
?
spring-servlet.xml
?
第3步: Spring Controller – RedirectAttributes
Controller 的代码使用 Customer.Java 对象作为 bean 来保存客户信息。Customer.java
?
POST 请求。
CustomerController.java
?
回到顶部
第4步: View 层
add customer.JSP 文件显示一个 Add New Customer(添加新客户)表单。add_customer.jsp
?
show_customer.jsp
?
Demo:
执行这个 web 项目即可。URL: http://localhost:8080/SpringMVC_Flash_Attribute_Maven_example/form.html
下载源代码
SpringMVC_Flash_Attribute_example.zip(3.5 MB)
本文地址:http://www.oschina.net/translate/spring-mvc-flash-attribute-example
原文地址:http://viralpatel.net/blogs/spring-mvc-flash-attribute-example/
相关文章推荐
- SpringMVC addFlashAttribute的分析与使用示例
- Spring MVC Flash Attribute 的讲解与使用示例
- Spring MVC Flash Attribute 的讲解与使用示例
- Spring MVC Flash Attribute 的讲解与使用示例
- Spring MVC Flash Attribute 的讲解与使用示例
- RedirectAttributes对象addFlashAttribute()的使用
- springMVC源码分析--@ModelAttribute使用及运行原理
- web.py 直接使用示例代码,web.application报错, 'module' object has no attribute 'application',问题原因分析
- Tcpdump命令的使用与示例――linux下的网络分析
- magento addattributetoselect使用
- [springMVC]Spring3MVC 在JSP中使用@ModelAttribute
- Flash反编译软件ASV2013能否分析使用过Adobe Alchemy的SWF文件?
- 使用Adobe Scout性能分析工具优化flash项目
- addFieldToFilter 与 addAttributeToFilter使用总结
- 从零开始学C++之STL(六):变动性算法源代码分析与使用示例(copy_backward、 transform、 replace_copy_if 等)
- 在Flash Pro、FlashDevelop 等中使用Monocle的高级分析功能
- Tcpdump命令的使用与示例——linux下的网络分析
- 在java中使用dom解析xml的示例分析