zoukankan      html  css  js  c++  java
  • request.setAttribute()的用法

    分类专栏: Java

    request在当次的请求的url之间有效一次传参数,速度快,缺点是参数只能取一次

    forward是转向,将现在的请求转交,他只能在同一个容器里使用同时保存客户的请求状态。

    sendRedirect是重定向,可以在同一个容器里使用,也可以发送其他容器请求,但是会丢失请求信息。它等于重发一个请求。
    request.setAttribute是在请求域里面加了一个请求的参数,所以在sendRedirect以后是无法取到request.setAttribute的请求的。

    解决办法(两种):
    1、如果你是在同一个服务器(容器)里做的转向工作。那么可以这样
    把request.setAttribute(“cha”, cha);改成request.getSession().setAttribute(“cha”, cha);
    然后<%Object a = (Object)request.getSession().getAttribute(“cha”);%>其他不变。
    2、你在Servlet里面这样写:
    把response.sendRedirect(“a.jsp”);改成response.sendRedirect(“a.jsp?a=cha”);
    那么在a.jsp页面上直接<%=request.getParameter(“a”)%>
    就可以了,不用写<%Object a = (Object)request.getAttribute(“cha”);%>.

    requestgetAttribute()与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结合上面所说的用法来传递所需的数值。

  • 相关阅读:
    51Nod1136--欧拉函数
    ubuntu裸机镜像问题
    汉诺塔问题
    lwm2m协议
    WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
    图解大顶堆的构建、排序过程
    WindowsService开发简单入门
    数据结构和算法参考网址
    c#创建windows服务入门教程实例
    C#比较两个对象是否为同一个对象。 Visual Studio调试器指南---多线程应用程序调试(一)
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/11959072.html
Copyright © 2011-2022 走看看