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

  • 相关阅读:
    27 树莓派做直播平台
    1 视频压缩软件
    (9-4 )deepsort在ubuntu1604下配置
    利用mvn进行多环境配置
    fidder及Charles使用
    轻松搞定面试中的二叉树题目(java&python)
    数据结构与算法系列 目录
    [转]揭秘webdriver实现原理
    作用域安全的构造函数
    JavaScript函数绑定
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/11959072.html
Copyright © 2020-2023  润新知