1

我在我的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>

我也可以在我的 JSP 中打印它

我正在尝试在我的 servlet 中请求 request.getAttribute,如下所示

    public class QnAAuthServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        public QnAAuthServlet() {
            super();

        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        enter code here
            String name = (String) request.getAttribute("name");
            System.out.println("name = " + name);

        }

    }

但在我的 servlet 中,名称始终为空。请有人帮我解决这个问题。

4

3 回答 3

1

一个请求代表……一个 HTTP 请求。一旦服务器完成为请求生成响应,请求就不再存在。当你的 servlet 执行时,它会得到一个新的 HttpServletRequest 对象,当然 JSP 存储在上一个请求中的属性早就忘记了。

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

于 2013-07-18T14:11:51.220 回答
1

这是因为您正在向 servlet 发送一个新请求。只要请求完成,请求参数就会存在,并且在提供响应时不可用。

如果你想传递名字,你将不得不做这样的事情

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

如果您希望参数可用于多个请求,那么您可以使用HttpSession它。

session.setAttribute("name","prasad");
于 2013-07-18T14:13:05.487 回答
0

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

于 2013-07-18T14:10:26.950 回答