java中setattribute_浅谈Java web 中request的setAttribute()用法

在两个JSP代码片中有这样两端程序:

JSP1代码

String [] test=new String[2];

test[0]="1";

test[1]="2";

request.setAttribute("test",test) ;

response.sendRedirect("jsp2.jsp");

JSP2代码

String test[]=(String[])request.getAttribute("test");

out.print(test);

但是,问题来了:为什么JSP2 中test获取不到呢?

其实那就要从request的生命周期或者是说作用范围说起了,setAttribute()用来在同一个request周期中保存变量使用。

比如servlet调用后,引出JSP页面,这是一个request周期。如果在Jsp页面需要servlet中的一些 处理结构,就从request.getAttribute中获取。

而sendRedirect()方法是通过浏览器重定向的,所以第二个JSP页面中获得的request并非是前一个页面的request(两次请求生成了前后两个不同的 request对象了)。

而此时使用RequestDispatcher接口的forward()方法则能够得到request中的对象了,这是因为后者并不是使用客户端浏览器进行重定向的,从函数的名字就可以看出,RequestDispatcher.forward()就是从服务器端进行任务转发。

sendRedirect()是请求从定向,和超连接是一个意思,比如你在A页面中写一个request.setAtribute,sendRedirect到B页面,就是说服务器从A页面中给你一个response,然后你的浏览器再去request到B页面,由于有两次request和response,是不能在B页面取到request.setAtribute里的值,能从地址栏看到url的改变。

request.getRequestDispatcher().forward(request,response)是请求分发器,比如你在A页面中写一个request.setAtribute,request.getRequestDispatcher().forward(request,response)到B页面,那就是说服务器给你的response是B页面的,并且只有一次request和response,所以是能在B页面取到request.setAtribute里的值,地址栏的url仍然是A页面的。

所以通常情况下,setAttribute()方法都和RequestDispatcher.forward()都在一起使用,具体用法示例:

List list = new CommonsDao().getAllCommons();

request.setAttribute("CommonsList", list);

request.getRequestDispatcher("View.jsp").forward(request, response);

顺便谈一谈 request.getAttribute()与request.setAttribute()

request.getAttribute("nameOfObj"),可得到JSP页面一表单中控件的Value。

其实表单控件中的Object的 name与value是存放在一个哈希表中的,所以在这里给出Object的name会到哈希表中找出对应它的value。

而不同页面间传值使用request.setAttribute(position, nameOfObj)时,只会从a.jsp到b.jsp一次传递,之后这个request 就会失去它的作用范围,再传就要再设一个 request.setAttribute()。而使用session.setAttribute()会在一个过程中始终保有这个值。

P.S.:JavaScript与JSP中不能相互传值,因为JavaScript运行在客户端,而JSP运行在服务器端。若想使它们之间可以相互传递参数,可以在JSP中设置一个hidden控件,用它的value结合上面所说的用法来传递所需的数值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础拾遗------webservice详解

基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗------接口详解 基础拾遗------泛型详解 基础拾遗-----依赖注入 基础拾遗-----数据注解与验证 基础拾遗-----mongoDB操作 基础…

南京打造大数据创新孵化平台

9月9日上午,南京微软云暨移动应用孵化平台在南京开发区新港高新园揭牌运营,项目创业大赛同步启动。 据悉,南京微软云暨移动应用孵化平台将打造以“云物大智”产业为核心的创新创业孵化平台。平台代理总经理童雪松介绍,平台汇集了强…

react控制组件中元素_React Interview问题:浏览器,组件或元素中呈现了什么?

react控制组件中元素by Samer Buna通过Samer Buna React Interview问题:浏览器,组件或元素中呈现了什么? (React Interview Question: What gets rendered in the browser, a component or an element?) **技巧问题** (** Trick Question *…

java gc时自动收dump_Full GC分析:设置Java VM参数实现在Full GC前后自动生成Dump

本文讲解了如何设置JavaVM参数实现在FullGC前后自动生成Dump。共有三个VM参数需要设置:HeapDumpBeforeFullGC 实现在Full GC前dump。HeapDumpBeforeFullGC 实现在Full GC后dump。HeapDumpPath 设置Dump保存的路径设置这些参数的方法,这里总结了四种&…

jquery插件dataTables自增序号。

dataTables官网提供了一种方式,使用后没有达到预期效果(js报错),没有深究原因。如果需要,可以按照下面的方式来。 1 $(#dataList).dataTable({2 "language": {3 "sProcessing&…

Maven使用详解

1、maven介绍&#xff1a; 2、pom.xml文件理解&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schema…

诺基亚报告称:到2020年北美电子邮件流量占比将跌至7%

日前&#xff0c;诺基亚贝尔实验室下属贝尔实验室咨询部门&#xff08;Bell Labs Consulting&#xff09;发布研究报告称&#xff0c;在北美&#xff0c;千禧一代青少年和青壮年消费群体正逐渐壮大&#xff0c;受其驱动的视频通信流量占比将由47%增至86%。随着视频通话和视频会…

开源贡献 计算_我的第一个Hacktoberfest-第一次为开源做贡献的经验

开源贡献 计算by Sibylle Sehl通过Sibylle Sehl 我的第一个Hacktoberfest-第一次为开源做贡献的经验 (My First Hacktoberfest — Experiences of Contributing to Open Source as a First Timer) Contributing to Open Source and projects can seem like a daunting process…

java web junit_如何使用junit测试javaweb工程

一:创建一个测试类,建议将测试类单独放在一个包中(在 maven 项目里有测试类专门的存放位置),新建一个Junit Test Case类,下一步 测试类的命名建议是你将要测试的类名Test,然后点 Browse, 你可以选择要进行测试的类(一般选择 Service, 因为 Service 关心的是业务需求),用这种方式…

文件系统及程序的限制关系: ulimit

想像一个状况&#xff1a;我的 Linux 主机里面同时登陆了十个人&#xff0c;这十个人不知怎么搞的&#xff0c; 同时打开了 100 个文件&#xff0c;每个文件的大小约 10MBytes &#xff0c;请问一下&#xff0c; 我的 Linux 主机的内存要有多大才够&#xff1f; 1010010 10000…

java代码_Java 代码实现排序算法

阅读本文约需要8分钟 大家好&#xff0c;我是你们的导师&#xff0c;我每天都会在这里给大家分享一些干货内容(当然了&#xff0c;周末也要允许老师休息一下哈)。上次老师跟大家分享了下SpringBootGradle MyBatisPlus3.x搭建企业级的后台分离框架的相关知识&#xff0c;今天跟大…

移动游戏市场Testin云测占有率超过90%

《王者荣耀》、全民K歌、美团大众、共享单车……越来越多的爆款应用占据着我们的手机桌面&#xff0c;也驱动着创业者不断发掘新的移动应用和商业模式&#xff0c;却鲜有人留意到&#xff0c;由移动应用催生出来的APP测试市场。 “现在用户获取成本是几年前的几十倍&#xff0c…

java 拆箱_Java自动装箱拆箱

一、装箱、拆箱定义如果一个int型量被传递到需要一个Integer对象的地方&#xff0c;那么&#xff0c;编译器将在幕后插入一个对Integer构造方法的调用&#xff0c;这就叫做自动装箱。而如果一个Integer对象被放到需要int型量的地方&#xff0c;则编译器将幕后插入一个队intValu…

我们如何使用CircleCI 2.0来构建Angular应用并将其部署到AWS S3

by Marius Lazar通过马里乌斯拉扎尔(Marius Lazar) 我们如何使用CircleCI 2.0来构建Angular应用并将其部署到AWS S3 (How we used CircleCI 2.0 to build and deploy an Angular app to AWS S3) In today’s world, continuous integration and deployment (CI & CD) is a…

携手助力新型智慧城市建设和科技创新发展

2017年5月9日&#xff0c;三门峡市政府与北京航天控制仪器研究所、溢思得瑞科技创新集团战略合作协议签约仪式举行&#xff0c;共同推动三门峡市新型智慧城市建设和科技创新发展。 市委书记刘南昌&#xff0c;市委常委、宣传部部长吕挺琳&#xff0c;副市长李琳&#xff0c;市城…

在采用vue-cli Post Get

需要依赖插件 vue-resource npm install vue-resource --save https://cn.vuejs.org/v2/cookbook/using-axios-to-consume-apis.html 采用axios一样可以取数值 new Vue({ el: #app, data () { return { info: null } }, mounted () { axios .get(https://api.coindesk.com/v1/b…

优秀的开源项目C_适合提高C/C++、网络编程能力的开源项目!不要错过,赶紧收藏...

我们学习每一个编程语言都是有一个项目实战的过程&#xff0c;而对于开发类的编程语言&#xff0c;除了适当的做项目程序外&#xff0c;学习了解其他的开源项目更是一个关键&#xff0c;就比如我们的C/C编程语言的学习。前阵子有一个小伙伴就问到我&#xff0c;我学好C/C基础后…

Opencv分水岭算法——watershed自动图像分割用法

分水岭算法是一种图像区域分割法&#xff0c;在分割的过程中&#xff0c;它会把跟临近像素间的相似性作为重要的参考依据&#xff0c;从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓&#xff0c;封闭性是分水岭算法的一个重要特征。 其他图像分割…

单变量线性回归模型_了解如何为单变量模型选择效果最好的线性回归

单变量线性回归模型by Bjrn Hartmann比约恩哈特曼(BjrnHartmann) 找出哪种线性回归模型最适合您的数据 (Find out which linear regression model is the best fit for your data) Inspired by a question after my previous article, I want to tackle an issue that often c…

java javax.xml.ws_如何通过javax.xml.ws.Service进行调用

在Eclipse中创建了一个新的标准java 7项目,并成功设法获取javax.xml.ws.Service的实例,如下所示&#xff1a;String wsdlURL "http://example.com:3000/v1_0/foo/bar/SomeService?wsdl";String namespace "http://foo.bar.com/webservice";String servi…