关于java:request.getParameter在JSP中返回null

request.getParameter returns null in JSP

Form.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Form
<body bgcolor="#FFFFFF" text="#000000">

Please enter your details

<form name="RegistrationForm" action="NewUser" method="post">
    <table cellspacing="5" cellpadding="5" border="1">
        <tr>
            <td align="right">First Name:</td>
            <td><input type="text" name="NewFirstName"></td>
        </tr>
        <tr>
            <td align="right">Last Name:</td>
            <td><input type="text" name="NewLastName"></td>
        </tr>
        <tr>
            <td align="right">Email Address:</td>
            <td><input type="text" name="EmailAddress"></td>
        </tr>
        <tr>
            <td align="right">Phone Number:</td>
            <td><input type="text" name="Phone Number"></td>
        </tr>
        <tr>
            <td align="right">Semester</td>
            <td><input type="text" name="Semester"></td>
        </tr>

    </table>
    <input type="submit" value="Submit">
</form>

</body>
</html>

NewUser.java(Servlet类)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.seria.quiz;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class NewUser
 */

@WebServlet("/NewUser")
public class NewUser extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */

    public NewUser() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        Connection conn = null;

        try {
            String FirstName = request.getParameter("firstName");
            System.out.println("Your firstname:" + FirstName);
            String LastName = request.getParameter("lastName");
            System.out.println("Your LastName:" + LastName);
            String Emailid = request.getParameter("email");
            String PhoneNumber = request.getParameter("phoneNumber");
            String Semester = request.getParameter("semester");

            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(
                   "jdbc:mysql://localhost:3306/seriaquiz","root","root");
            PreparedStatement pst = (PreparedStatement) conn
                    .prepareStatement("insert into formdetails(firstName,lastName,email,phoneNumber,semester) values(?,?,?,?,?)");// try2
                                                                                                                                    // the
                                                                                                                                    // name
            pst.setString(1, FirstName);
            System.out.println("Your firstname1:" + FirstName);
            pst.setString(2, LastName);
            System.out.println("Your LastName1:" + LastName);
            pst.setString(3, Emailid);
            pst.setString(4, PhoneNumber);
            pst.setString(5, Semester);

            int i = pst.executeUpdate();
            String msg ="";
            if (i != 0) {
                msg ="Record has been inserted";
                pw.println("<font size='6' color=blue>" + msg +"</font>");

            } else {
                msg ="failed to insert the data";
                pw.println("<font size='6' color=blue>" + msg +"</font>");
            }
            pst.close();
        } catch (Exception e) {
            pw.println(e);
        }

    }

}

如标题所示,request.getParameter每次都返回null。 我将sysout语句放在requestParameter之后,它显示空值。 任何帮助将不胜感激。 抱歉给您带来不便,我是新来的。


servlet中的参数名称需要在JSP中与它们匹配

所以

1
String FirstName = request.getParameter("firstName");

应该

1
String FirstName = request.getParameter("NewFirstName");

获取表单参数的确切值,请尝试...。

字符串名字= request.getParameter(" NewFirstName");

因为..

您通过" NewFirstName"指定名称属性...


从w3.org第17.2节控件

Users interact with forms through named controls.

A control's"control name" is given by its name attribute. The scope of the name attribute for a
control within a FORM element is the FORM element.

When a form is submitted for processing, some controls have their name paired with their current
value and these pairs are submitted with the form.


控制的例子是

1
<input type="text" name="NewFirstName">

因此,当表单提交时,它包含一个控件名称=值,例如

1
NewFirstName=YourFirstName

在您的JSP中,您应该使用控件名称进行访问

1
String FirstName = request.getParameter("NewFirstName");


参考:http://www.w3.org/TR/html401/interact/forms.html


您要输入错误的参数
您应该始终要求输入与HTML中所述相同的ID /名称

1
request.getParameter("NewFirstName");