struts1的ActionForm的作用域(生命周期)
转自:http://biancheng.dnbcw.info/java/240347.html
今天查找一个问题:我在列表页面添加一个查询条件,然后查询符合条件的数据.查询结果正确.然后我进入其它菜单项操作,当我再次进入列表页面时,系统还是按刚才的查询条件查询的.只要不我修改或清空查询条件,查询条件一直存在.我用的struts1.
很奇怪.以前没遇到过.先是怀疑客户端错误:
1:是不是IE缓存?抓包页面确实是被重新请求了.请求的URL中也没有上次的查询条件.那就不是IE缓存的问题.
2:那是不是页面的COOKIE保存了数据呢?抓包里返回的页面直接就填写了这些查询条件.
这样,问题就排除了客户端设置错误的可能了.那问题肯定在服务器上,一定时服务器端什么地方保存了ActionForm!
于是我就debug服务器端代码追查,在传到我写的Action里的from就已经有查询条件了,于是再往上一级查,找到了拼装ActionForm的方法,在struts1的RequestProcessor类里,代码如下:
|
|
从if ("request".equals(mapping.getScope())) { request.setAttribute(mapping.getAttribute(), instance); }这句可以看出来,原来当scorp是request时,会把Form保存在request里,否则保存在session里.从这里知道是哪儿存的了,我的配置文件没有配置scope属性,默认值就是session,也就是在这里会把ActionForm存到session里.
下面再找是怎么取的:在RequestUtils.createActionForm(request, mapping, moduleConfig, servlet);方法里,会调用它本身的另一个方法:
|
|
行了,也没费多少时间,这回对scope属性的作用就印象深刻了.呵呵.
上网查了一下,还真有不少人遇到这种问题.
struts1的ActionForm的作用域(生命周期)的更多相关文章
- 存储类&作用域&生命周期&链接属性
链接属性 (1)大家知道程序从源代码到最终可执行程序,经历的过程:编译.链接. (2)编译阶段就是把源代码搞成.o目标文件,目标文件里面有很多符号和代码段.数据段.bss段等分段.符号就是编程中的变量 ...
- 7、存储类 & 作用域 & 生命周期 & 链接属性
概念解析 存储类 存储类就是存储类型,也就是描述C语言变量在何种地方存储. 内存有多种管理方法:栈.堆.数据段.bss段..text段······一个变量的存储类属性就是描述这个变量存储在何种内存段中 ...
- C语言-存储类&作用域&生命周期&链接属性
1.概念解析(1)存储类 a.存储类就是存储类型,也就是描述C语言变量在何种地方存储. b.内存有多种管理办法:栈.堆.数据段.bss段..text段......一个变量的存储类属性就是描述这个变量存 ...
- C的变量类型、作用域与生命周期的总结
C的变量类型.作用域与生命周期的总结 最近在看"C Programing Language" (Kernighan, Ritchie)关于外部变量的讨论,之前在学C的时候对这些ex ...
- Mybatis中的基本对象的生命周期和作用域
不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题 SqlSessionFactoryBuilder 这个类可以被实例化.使用和丢弃,一旦创建了 SqlSessionFact ...
- 07、NetCore2.0依赖注入(DI)之生命周期
07.NetCore2.0依赖注入(DI)之生命周期 NetCore2.0依赖注入框架(DI)是如何管理注入对象的生命周期的?生命周期有哪几类,又是在哪些场景下应用的呢? -------------- ...
- 018-019 NET5_内置容器支持依赖注入+IServiceCollection的生命周期
概念: DI依赖注入: IServiceCollection仅支持构造函数注入 什么是依赖注入? 如果对象A依赖对象B,对象B依赖对象C,就可以先构造对象C,然后传递给对象B,再把对象B传递给A.得到 ...
- Spring中Bean的作用域、生命周期
Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...
- 《征服 C 指针》摘录2:C变量的 作用域 和 生命周期(存储期)
在开发一些小程序的时候,也许我们并不在意作用域的必要性.可是,当你书写几万行,甚至几十万行的代码的时候,没有作用域肯定是不能忍受的. C 语言有如下 3 种作用域. 1.全局变量 在函数之外声明的变量 ...
随机推荐
- .Net下 自动执行MSI和EXE文件
MSI是安装文件,需要系统自带的msiexec.exe来执行 var tempDir = @"D:\UploadFiles\SCADASetupWix.msi"; var star ...
- EDA系列学习
发布这系列的EDA课程VHDL实验是因为有着和单片机系列同样的理由,另外,这个系列的文档只进行过波形图仿真,部分的程序可能不能在硬件上运行. 目录 实验二 8位加法器设计 实验三 组合逻辑电路的VHD ...
- 喜迎2015年新年:坦克大战(Robocode)游戏编程比赛图文总结
2015春节前,葡萄城的软件工程师以特有的方式来迎接新年——2015新年编程邀请赛. 邀请赛的初衷,是和大家一起,寻找编程最初的单纯的快乐. 在代码的世界里,添加动力,继续远航. ...
- Entity Framework问题总结
Entity Framework WITH(NOLOCK) EF本身不支持WITH(NOLOCK), 都指出建议设置事务的级别为允许脏读. IsolationLevel = IsolationLeve ...
- Spring MVC + jpa框架搭建,及全面分析
一,hibernate与jpa的关系 首先明确一点jpa是什么?以前我就搞不清楚jpa和hibernate的关系. 1,JPA(Java Persistence API)是Sun官方提出的Java持久 ...
- js 函数提升和变量提升
总结: 函数提升比变量提升优先级高! 词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行 ...
- Git 常用的命令总结(欢迎收藏备用)
总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------------------------- <极客镇楼> ...
- 【UML】UML基础知识
UML简介 统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述.可视化处理.构造和建立软件系统制品的文档. 它记录了对必须构造的系统的决定和理解,可用于对系统的理解. ...
- 【Android】Android内存机制,了解Android堆和栈
1.dalvik的Heap和Stack 这里说的只是dalvik java部分的内存,实际上除了dalvik部分,还有native. 下面针对上面列出的数据类型进行说明,只有了解了我们申请的数 ...
- js运动:多div变宽、二级菜单
定时器及运动函数. 多div变宽: <!-- Author: XiaoWen Create a file: 2016-12-13 09:36:30 Last modified: 2016-12- ...