Java 缺少 Servlet 请求参数

Java Servlet request parameter missing

我正在使用 Tomcat 7。我有一个方法,其中有一个名字列表,这些名字在他们的传记页面上有 links。 link 基于他们的 id。然而,他们的 id 没有出现在 URL 中。当我单击 link 时,url 显示,localhost:8080/Persons/servlet/person?pid= 我不确定为什么不显示 ID。

我有一个登录名 class,它使用 doPost 来隐藏密码和用户名。这是生成人员列表及其 link 的页面。

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
{
     ...
     query = "SELECT * FROM persons";
     rs = statement.executeQuery(query);

     String name = "";

     while(rs.next())
     {
        String id = rs.getString("id");
        name = rs.getString("first_name") + " " + rs.getString("last_name");
        out.println("<a href = '/Persons/servlet/person?pid='" + id + "\"'>"  + name + "</a>");
        out.println("<br/>");
     }
}

单击 linked 时,它会进入处理传记的 Person.java class。

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
{
    response.setContentType("text/html");

    String personID = request.getParameter("pid");

    PrintWriter out = response.getWriter();

    out.println("<HTML><HEAD><TITLE>Hello</TITLE></HEAD>");
    out.println("<BODY><H1>Biography</H1>");
     ...
}

也许引号有问题,试试这个:

out.println("<a href = '/Persons/servlet/person?pid=" + id + "'>"  + name + "</a>");
out.println("<a href = '/Persons/servlet/person?pid='" and+ id + "\"'>"  + name + "</a>");

您的 href 属性值以单引号 '/Persons 开头并在 "pid" 之后以单引号结尾:?pid='.

id 值及其后的双引号和单引号不是 HTML 元素属性值的一部分。

您可以使用 Validator 来验证您的 HTML 标记的正确性。