gpt4 book ai didi

java - 为什么 request.getParameter() 方法返回 null?

转载 作者:行者123 更新时间:2023-11-29 12:05:38 25 4
gpt4 key购买 nike

我有一个静态 HTML 文档,它将表单发送到 Java servlet。然后,servlet 获取表单的值并将它们转发到 SQL 数据库。但是,问题是当我确定该值不为空时,数据库声称该值为空。

表格如下:

<form method="post" action="Handler" target="_blank" enctype="multipart/form-data">
<div class="row uniform 50%">
<div class="6u 12u(mobilep)">
<input type="text" name="name" id="name" placeholder="Username" />
</div>
<div class="6u 12u(mobilep)">
<input type="email" name="email" id="email" placeholder="Email" />
</div>
</div>
<div class="row uniform 50%">
<div class="6u 12u(mobilep)">
<input type="password" name="password" id="password" placeholder="Password" />
</div>
</div>
<div class="row uniform 50%">
<div class="12u">
<textarea name="bio" id="bio" placeholder="Describe yourself" maxlength="200" rows="3"></textarea>
</div>
</div>
<div class="row uniform">
<div class="12u">
<ul class="actions align-center">
<li><input type="submit" value="Send Message" /></li>
</ul>
</div>
</div>
</form>

这是 servlet 代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Connection c = null;
PrintWriter op = response.getWriter();
response.setContentType("text/html");

try{
Class.forName("com.mysql.jdbc.Driver");
c = DriverManager.getConnection(DB_URL, "root", "root");
}catch(Exception s){
op.println("<html>");
op.println("<body><h1><strong>"+ "Error: "+ s +"</strong></h1></body>");
op.println("</html>");
}

String username = request.getParameter("name");
String email = request.getParameter("email");
String pass = request.getParameter("password");
String bio = request.getParameter("bio");
String proPicName = "false";
Long time = System.currentTimeMillis();
String sysTime = time.toString();

Statement stmt = null;

try{
stmt = c.createStatement();
stmt.execute("USE dvlpr;");
stmt.execute("INSERT INTO user_tbl (username, email, password, bio, pro_pic, last_on, date_created)" + " VALUES ("+username+", "+email+", "+pass+", "+bio+", "+proPicName+", "+sysTime+", "+sysTime+");");


op.println("<html>");
op.println("<body><h1><strong>Connection made! Username: " + username+ " Email: " + email+ " Your account has been created. We'll keep your password private, too. Thanks!</strong></h1>");
op.println("</body>");
op.println("</html>");
}catch(Exception s){
op.println("<html>");
op.println("<body><h1><strong>"+ "Error: "+ s +"</strong></h1></body>");
op.println("</html>");
}

}

错误代码如下:

Error:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'username' cannot be null

为什么返回 null?

最佳答案

参数没问题。由于语法原因,查询未正确执行。值本身需要用引号引起来,因此它应该如下所示:

VALUES('"+username+"',....

如您所见,我在双引号之前添加了一个 ',在双引号之后添加了一个,因此 ' 将成为结果字符串的一部分。就像在任何其他 SQL 插入中一样,您将执行 VALUES('MyUsername', 'MyPassword',...);

此外,您可能想使用一个执行方法而不是 2 个,因此它是:

stmt.execute("USE dvlpr; INSERT INTO....");

而且 "VALUES 之前也不需要 +

关于java - 为什么 request.getParameter() 方法返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31525558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com