request.getAttribute在servlet中为null

时间:2013-07-18 14:03:46

标签: 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/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中请求.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中的name总是为null。请有人帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

如果您希望参数可用于多个请求,则可以使用HttpSession

session.setAttribute("name","prasad");

答案 2 :(得分:0)

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