spring mvc重定向

他们说一块岩石会引起雪崩。 最近,我的一位同事Marcin Radoszewski给了我一块岩石。 您可能永远不会猜到它是什么,但是有机会在许多Web应用程序中使用它。 请允许我向您介绍这块石头。

您可能很清楚发布模式后的重定向 。 使用Spring Framework,您有几种方法来实现它,让我们专注于其中一种方法, 将目标URL作为带有redirect: prefix的String返回 。

假设我们有使用这种重定向方法的控制器,并且在重定向期间必须传递一些参数,例如,使其成为某些实体ID:

@RequestMapping(method = RequestMethod.POST)
public String onPost(...) {...return "redirect:form.html?entityId=" + entityId;
}

如您所见,我们的岩石看上去并不危险,甚至看上去都不可疑–这到底是怎么了?! –您可能会问。 好了,要解释一下,我们必须看看Spring Framework如何处理您返回的值的方式。

您可以从阅读Spring Framework文档中的解析视图开始,然后仔细查看AbstractCachingViewResolver的源代码,它是Spring中许多不同的视图解析器的基类,包括:JSP,FreeMarker,Velocity,Jasper Reports,Tiles和XSLT视图解析器。

resolveViewName方法被调用AbstractCachingViewResolver的它采用了基于HashMap的视图缓存加快鉴于在未来的呼叫解决,和缓存关键是使用视图名称和当前语言环境中创建的默认。

现在,当您使用上述重定向方法时, Spring Framework将从控制器方法返回的整个String用作视图名称,包括目标URL中包含的所有参数。 每次执行重定向时,参数可能会有所不同,因此这种重定向将在AbstractCachingViewResolver的视图缓存中留下一个额外的条目,从而导致内存泄漏。

多久会终止我的申请? –您可能会问。 这取决于分配给JVM的内存量以及执行的重定向次数-我使用-Xmx64M选项进行了一些测试,仅通过一个控制器即可构建简单的应用程序-请参见本示例 。 大约76400重定向后,应用程序因OutOfMemoryError:Java heap space终止。

参考: Spring的Web MVC –在Warlock's Thoughts博客上从我们的JCG合作伙伴 Michal Jastak 重定向到Memory Leak 。

翻译自: https://www.javacodegeeks.com/2012/12/springs-web-mvc-redirect-to-the-memory-leak.html

spring mvc重定向

spring mvc重定向_Spring的Web MVC –重定向到内存泄漏相关推荐

  1. 检测Web浏览器上的内存泄漏

    目录 背景 拍摄堆快照 一个真实世界的例子--AsyncSubject 附加说明 兴趣点 下载源 - 1.2 KB 背景 当您关闭浏览器选项卡时,所有内存都将被释放.内存泄漏在Web浏览器上很可能不是 ...

  2. Spring的Web MVC –重定向到内存泄漏

    他们说一块岩石会引起雪崩. 最近,我的一位同事Marcin Radoszewski给了我一块岩石. 您可能永远都不会猜测它是什么,但是有机会在许多Web应用程序中使用它. 请允许我向您介绍这块石头. ...

  3. Spring Web MVC(一)

    概述 Spring Web MVC框架的特点 五大核心组件 编程步骤 五大核心组件 DispatcherServlet前端控制器 WebApplicationContext中特殊的bean 处理过程 ...

  4. Spring Web MVC是什么

    2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...

  5. Spring系列(九)- Spring Web MVC 框架

    文章目录 MVC设计模式简介 Spring MVC 工作流程 Spring MVC接口 需求的配置 Spring MVC视图解析器 Controller 注解类型 Spring MVC的转发与重定向 ...

  6. Spring Web MVC详解

    Spring Web MVC详解 原创 2016年03月23日 10:55:57 标签: 421 编辑 删除 2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java ...

  7. 【Spring Web MVC】Spring Web MVC 注解开发环境搭建

    为什么80%的码农都做不了架构师?>>>    1.创建maven项目 创建一个名为:springwebmvc-first的maven项目 2.添加依赖包 要使用springWebM ...

  8. Spring.Web.Mvc 注入(控制器属性注入)

    1.web.config配置 <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.N ...

  9. spring mvc原理_Spring MVC的工作原理,我们来看看其源码实现

    来源:https://www.cnblogs.com/youzhibing/p/10695012.html 作者:youzhibing2904 遗留问题 在关于利用maven搭建ssm的博客,我们一起 ...

最新文章

  1. 如何将重复的数据标红_python如何处理重复值数据?
  2. js向head中添加js代码
  3. 系统安装操作优化:chapter 3 安装windos操作系统。
  4. jquery饼状图插件的指引线_JQuery图表插件Highcharts示例教程
  5. linux:vim中全选复制
  6. Java记录 -9- 面向对象之封装
  7. 数值计算方法(高斯消元以及LU分解)
  8. 超级简单的jQuery纯手写五星评分效果
  9. Java_Spring MVC_Servlet
  10. 智能家居控制系统完整设计方案
  11. 瑞能实业IPO被终止:年营收4.47亿 曾拟募资3.76亿
  12. 修改element $prompt的文字样式
  13. Geronimo入门与进阶
  14. java 生成数字_Java随机生成数字的方法
  15. 使用IDEA连接本地数据库
  16. 分布式学习之一:事务
  17. Android-APP隐私合规检测
  18. IDEA中Artifact的配置
  19. 请问mysql 中的ZEROFILL是什么意思
  20. MacBook Pro如何修改Type C网口适配器的Mac地址

热门文章

  1. 10 道关于 Java 泛型的面试题
  2. Oracle入门(十四.11)之使用显式游标属性
  3. Spring AOP知识点简介
  4. 单链表基本操作在主函数中的实现
  5. vue的基本项目结构
  6. 2-6 基于SpringBoot的SpringSecurity环境快速搭建与验证
  7. 给数据库表字段设置默认值
  8. easyui根据select下拉框内容更新表单内容_Ant Design 4.0 的一些杂事儿 - Select 篇
  9. Java之Socket与HTTP区别
  10. 利用session防止表单重复提交