request.setAttribute()怎么用的?
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);
为什么JS P2中会找不到test?

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

sendRedirect()方法是通过浏览器重定向的,所以第二个JSP页面中获得的request并非是前一个页面的request(两次请求生成了前后两个不同的 request对象了)。
用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结合上面所说的用法来传递所需的数值。

request.getRequestDispatcher()是请求转发,前后页面共享一个request

response.sendRedirect()是重新定向 前后页面不是一个request

sendRedirect是通知IE再次提交一个http请求,
dispatcher是直接转到目的地址,最直接得表现
应该是dispatcher后的IE地址栏地址是不变的
回答者:
request.getRequestDispatcher()是服务器端跳转
response.sendRedirect()是客户端跳转
关于request.request.getRequestDispatcher().forward()方法的一点看法

今天在调试一个Servlet程序的时候,报了以下错误!
java.lang.IllegalStateException: Cannot forward after response has been committed
根据字面理解的话,意识是在response已经提交后程序不能再一次的跳转!

研究代码以后发现,是因为前面已经执行过一次request.request.getRequestDispatcher().forward()
但是后面的request.request.getRequestDispatcher().forward()依然被执行到了!

那么很有理由相信request.request.getRequestDispatcher().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页面的

request.sendRedirect 与 request.getRequestDispatcher.forward 的区别
2008-01-20 17:09
1、forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL, 因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。
2、forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式两者不是同一个application。即参数的传递方式不一样:forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)。
3、sendRedirect能够处理相对URL,自动把它们转换成绝对URL,如果地址是相对的,没有一个‘/’,那么Web container就认为它是相对于当前的请求URI的。比如,如果为response.sendRedirect("login.jsp"),则会从当前servlet 的URL路径下找login.jsp: http://10.1.18.8:8081/dms/servlet/Servlet 重定向的URL:http://10.1.18.8:8081/dms/servlet/login.jsp,如果为response.sendRedirect("/login.jsp")则会从当前应用径下查找url:http://10.1.18.8:8081/login.jsp。而forward不能这样处理相对路径。

request的setAttribute()用法及request.sendRedirect 与 request.getRequestDispatcher.forward 的区别相关推荐

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

    在两个JSP代码片中有这样两端程序: JSP1代码 String [] test=new String[2]; test[0]="1"; test[1]="2" ...

  2. request.setAttribute()用法

    小问题: JSP1代码 String [] test=new String[2]; test[0]="1"; test[1]="2"; request.setA ...

  3. request的setAttribute()怎么用的?

    equest.setAttribute()怎么用的? JSP1代码 String [] test=new String[2]; test[0]="1"; test[1]=" ...

  4. 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别

    JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是 ...

  5. JSP中页面跳转response.sendRedirect()和request.getRequestDispatcher()的区别

    Java Web开发中,采用MVC模式的时候,在控制器完成模型的调用之后会选择界面对用户响应,用常有2种方式 1,通过response对象的sendRedirect方法重定向: response.se ...

  6. request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的区别

    在进行web开发时,跳转是最常见的,今天在这里来学习下2种跳转: 第一种是request.getRequestDispatcher().forward(request,response): 1.属于转 ...

  7. JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,respon 区别

    JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是 ...

  8. request.getSession.setAttribute和request.setAttribute区别

    [方法1]request.getSession.setAttribute [方法2]request.setAttribute 相信很多初学的小伙伴对方法1和方法2,也充满了疑问,因为他们俩的作用都是把 ...

  9. 新手入门:介绍JSP中request属性的用法

    新手入门:介绍JSP中request属性的用法 一.request.getParameter() 和request.getAttribute() 区别 (1)request.getParameter( ...

最新文章

  1. Eclipse发布MicroProfile 1.4和2.0
  2. 爬虫(beautifulSoup)
  3. easyui combobox设置只读属性
  4. js实现倒计时 类似团购网站
  5. html跑马灯可以上下动ma,使用 JS 实现上下滚动走马灯
  6. 常见字符编码 java
  7. 接口和抽象类的区别?
  8. unity3d 资源打包加密
  9. PDF密码可以破解吗?有没有PDF解密的方法
  10. html轮播图片不显示不了,图片轮播的奇怪现象【图片显示不完整】
  11. DVD-R、DVD+R以及DVD-RW和DVD+RW的功能区别
  12. 手机屏幕驱动板HDMI调光触摸旋转说明Fondar
  13. maven安装以及本地创库设置
  14. day03 数据预处理
  15. 各个键盘按键KeyValue值
  16. Socket编程与应用开发---- 数据采集的设计与实现(TCP)
  17. 十分钟看懂数据库——数据库入门级语言总结
  18. Pytorch实战:8层神经网络实现Cifar-10图像分类验证集准确率94.71%
  19. 基于AOP的优惠券发送异常哨兵监控
  20. 2021年三季度中国家居用品行业A股上市企业营收排行榜:欧派家居、顾家家居排名前2位,且近五年第三季度的净利润均逐年递增(附热榜TOP61详单)

热门文章

  1. 操作系统---文件管理
  2. c#串口通信(三)--半双工通信的数据接收
  3. git 申请合并冲突:rebase 解决合成一条再合并
  4. 前端的工程化、模块化和组件化
  5. PKUWC2019纪中游记
  6. http://www.youku.com/playlist_show/id_4637211.html
  7. c语言中tc和vc有什么区别,转:写C++用什么编译器好——TC,VC++6.0,DEV C++,VS2005浅显比较...
  8. 压缩为王-阿里第五届中间件复赛总结
  9. 【Pyecharts】20W条淘宝文胸商品评论数据可视化~
  10. 各领域机器学习数据集汇总(附下载地址)