【问题标题】:setAttribute in JSP and get that attribute in servlet [duplicate]JSP中的setAttribute并在servlet中获取该属性[重复]
【发布时间】:2017-10-10 19:55:37
【问题描述】:

注意:这个问题已经在下面的link 中回答了,唯一的区别是在这个问题中我只想发送一个特定的值而不是一个完整的对象。

我想创建一个表单,除了输入值之外,我还想使用 setAttribute() 方法将值从 JSP 发送到 servlet。

例子

demo1.jsp

<form method="POST" action="DEMO1">
<% request.setAttribute("value",1); %>
<input type="submit" value="Add" />
</form>

演示1

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    PrintWriter pw=response.getWriter();
    pw.println(request.getAttribute("value"));
}

当我发布我的页面时,它会打印一个空值。是否有任何过程可以让我在 servlet 中访问 jsp 的 setAttribute() 值。

【问题讨论】:

    标签: jsp


    【解决方案1】:

    您需要了解这里的处理顺序。当您执行request.setAttribute("value",1); 时,只需在当前请求对象上设置属性value,一旦您将HTML 表单返回给用户,该属性就不再存在。当用户提交表单时,表单中没有名为“value”的属性。因此,当您的 servlet 尝试从请求对象中检索它时,它会返回为 null,因为它不存在。

    使用隐藏输入来存储您希望服务器在提交表单时接收的值。

    &lt;input type="hidden" name="value" value="1" /&gt;

    所以您的演示 JSP 将如下所示:

    <form method="POST" action="DEMO1">
       <input type="hidden" name="value" value="1" />
       <input type="submit" value="Add" />
    </form>
    

    【讨论】:

    • 有没有办法访问那个值...
    • 谢谢。但是我仍然无法理解为什么在我们发布页面后文本中的值或隐藏值存在以及为什么 setAttribute() 无法做到这一点。以及请求范围如何实际工作。请你解释一下...需要帮助。
    • 表单上未禁用的任何输入属性都会随表单一起提交。属性会自动填充到“请求”对象中,键作为属性的name,值作为属性的value。
    • 谢谢你......
    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 2015-04-18
    • 1970-01-01
    • 2014-06-22
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多