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

  • 相关阅读:
    各位AS3各种验证在这里,邮箱 身份证 ...
    各位同学还在为AS3在IE透明模式下弹出新窗口而烦恼吗?
    Flash As3 通过二进制[ByteArray]判断真实的文件类型
    【A8笔记1】Alternativa 8.5.0 在Flash、Fb、Fd中的配置
    超酷光带效果
    flash 墙
    A3D CoverFlow图片展示效果
    Windows8Metro模式IE10放弃Flash的支持
    html5 控件整理
    AS3中JSON的基本应用实例
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/11959072.html
Copyright © 2011-2022 走看看