struts-request 请求参数的生命

struts-request 请求参数的生命

以前我看过很多文章,大概的意思是:挡在浏览器请求时就会生成一个新的线程,request就会在整个线程的生命周期里,jsp->action->jsp,当线程注销时,request也会注销,当你再次请求浏览器时,又会再生一个线程,同时也会生成新的request。

其实这里面的意思大家都会明白,当看到这样的文章我也感觉自己很明白,可是实际应用中还会表现出不足。

 

 下面的讨论都是在product_id不变的情况下讨论的,只是简单的从一个jsp传令一个jsp中

浏览器中我们请求路径:http://localhost:8080/fangdo/calculator/listPriceByProductId.action?product_id=1,会根据配置文件找到相应的action的方法,

在方法中我们可以通过

HttpServletRequest request = ServletActionContext.getRequest(); String product_id= request.getParameter("product_id");

这俩行获得product_id参数值,然后在后台进行逻辑操作。

可以通过下面的代码传到jsp页面中

request.setAttribute("product_id", product_id);

在jsp页面中可以通过这一行获得值:

String product_id = request.getAttribute("product_id");

上面的流程是请求开始时传递参数,这个参数伴随着整个生命周期。

发现问题没?

请求是jsp->action->jsp,如果我们想在跳转后的jsp页面中获得参数,可以直接使用

String product_id= (String)request.getParameter("product_id");

而不用上面那么麻烦,这个参数一直在这个request生命中,你可以在在这个request生命中的任何时候获取他,使用它。

如果在action中获得参数,然后通过setAttribute()方法发送到jsp中,再有jsp中getAttribute()获得。这是对request生命周期的理解错误的表现,可能你会理解成jsp->action就是request的作用区域,所以需要setAttribute()方法将参数再次传一下。其实在浏览器请求时就会生成一个新的线程,request就会在整个线程的生命周期里,jsp->action->jsp,这是request的整个生命周期。

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/winHerson/blog/52498

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110438.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • c程序设计,贪吃蛇程序是什么_C语言编写贪吃蛇

    c程序设计,贪吃蛇程序是什么_C语言编写贪吃蛇C语言,贪吃蛇程序设计一.代码分析(1)头文件(2)宏定义(3)全局变量(4)函数部分1)绘制地图函数DreawMap(),2)食物位置函数FoodRand()3)键盘控制移动函数ControlMove()函数4)移动函数Move()函数5)蛇身开始函数Isnake()函数6)判断食物是否被吃到函数Jfood()函数7)判断是否碰到墙Jwell()函数8)判断是否碰到蛇身Jsnake()函数9)计算分数和难度Showf()函数10)清空存储空间函数二.代码附录一.代码分析(1)头文件1.include

    2022年10月26日
  • gitHub新手教程

    gitHub新手教程gitHub新手教程

  • Mybatis:了解SqlSessionTemplate[通俗易懂]

    Mybatis:了解SqlSessionTemplate[通俗易懂]读完这篇文章,你将会知道:SqlSessionTemplate和SqlSessionManager有什么不同。 SqlSessionTemplate如何实现线程安全。 SqlSessionTemplate怎么和数据库打交道。目录SqlSessionTemplate和SqlSessionManager有什么不同。SqlSessionTemplate如何实现线程安全…

  • python爬虫—–request模块学习及案例

    python爬虫—–request模块学习及案例

  • war如何解压[通俗易懂]

    war如何解压[通俗易懂]工具/原料 WinRAR eclipse tomcat9.0 用解压软件解压 如果只是想看war包中的内容,可以直接用解压软件解压war包就可以了。 如图我是用WinRAR解压的。右键war包选择打开方式,接着选择一个解压软件,最后将文件夹解压到电脑上就可以了,我是解压到桌面上。 解压后就可以看到桌面上多了一个文件夹。打开文件夹,就能看到war包里面的内容了。 END 用eclipse解压 如果是想编辑该w

  • 永磁同步电机矢量控制(二)——控制原理与坐标变换推导

    永磁同步电机矢量控制(二)——控制原理与坐标变换推导永磁同步电机控制原理矢量控制框图如下图所示:矢量控制的原理是在永磁同步电机上设法模拟直流电动机的转矩控制规律,经过坐标变换,使其电流矢量分解为产生磁通的电流分量和产生转矩的电流分量,两个分量互相垂直,相互独立。这样就可以对它们进行单独调节,与直流电动机的双闭环控制系统类似。(双闭环控制系统在陈伯时电力拖动控制书的2.4章节有详细的介绍,有需要的可以回顾一下。大三学的现在基……………

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号