Jsp servlet中的request.getAttribute为null

Jsp servlet中的request.getAttribute为null,jsp,servlets,Jsp,Servlets,我正在jsp中设置request.getAttribute,如下所示 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/lo

我正在jsp中设置request.getAttribute,如下所示

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%


        request.setAttribute("name", "anita");


        %>
        <%=request.getAttribute("name") %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <form method="POST" action="QnAAuthServlet">

    <input type="hidden" name="orgName" value="SENDFORBOB"></input>
    <input type="submit"></input>
    </form>
    </body>
    </html>

但是名称在我的servlet中总是空的。请有人帮我解决这个问题。

如果我理解正确,您的servlet将收到一个新请求。如果需要在请求中将名称传递给servlet,则需要创建一个名为“name”的输入元素。无法设置将在呈现当前页面的请求中发布的请求。

请求表示。。。HTTP请求。一旦服务器完成为请求生成响应,请求就不再存在。当servlet被执行时,它会获得一个新的HttpServletRequest对象,当然,JSP在前一个请求中存储的属性会被遗忘很长时间


如果要将数据从HTML页面(由JSP生成)传递到servlet,则必须将其作为请求参数传递,或作为表单输入发送。

这是因为您正在向servlet发送新请求。请求参数在请求完成时有效,在响应服务时不可用

如果你想传递名字,你必须这样做

<input type="hidden" name="name" value="someValue">

目前在这个例子中,我只传递了字符串。但是,在我的实际实现中,我必须将一个对象从jsp传递到servlet。因此,如果我创建输入元素,这对我没有帮助。除非您使用spring或其他工具将请求映射为对象,否则您将无法在请求中包含对象。可能不建议这样做,但您可以在会话中放置对象。我看不出为什么要在JSP中的请求中放置一个值以使其返回到请求中,因为该值已经呈现在服务器端。Ok。我也试过这个。但是session.getAttribute(“名称”);适用于非IE浏览器。但是,不是在IE上。我已将IE中接受cookies的级别设置为较低,以使其正常工作。为什么会发生这种情况?在这种情况下,我可以使用URL重写吗?会话是在服务器端维护的,不受用户浏览器的影响。也许你应该再研究一下,但是,我如何从JSP向servlet发送一个对象呢?不仅仅是一根绳子。这个对象有内部的getter来获取其中的值。1.根本不要传递对象。将数据保存到数据库,并在以后检索。2.使用几个隐藏字段3。使用会话。。。没有具体的问题要解决,很难给出一个好的答案。我也试过这个。但是session.getAttribute(“名称”);适用于非IE浏览器。但是,不是在IE上。我已将IE中接受cookies的级别设置为较低,以使其正常工作。为什么会发生这种情况?你能告诉我在这种情况下我可以使用URL重写吗?好的。我也试过这个。但是session.getAttribute(“名称”);适用于非IE浏览器。但是,不是在IE上。我已经将IE中接受Cookie的级别设置为较低,以使其正常工作。当我在servlet中执行request.setAttribute并尝试在转发的jsp中获取request.getAttribute时,我需要一个小的说明。我将获得值。这是怎么回事?jsp在内部也是一个servlet。对吗?
<input type="hidden" name="name" value="someValue">
session.setAttribute("name","prasad");