我正在尝试使用jsp将web页面中表单中的字段存储到mysql中的数据库中。我没有得到任何错误,但我没有看到我的数据库中的数据时,我点击提交。请帮我找出我的问题。我有以下代码:
注册-新用户
<div id="container">
<form action = "insertData.jsp" method = "post">
<table>
<tr><td>E-mail/username:</td><td><input type="text" name="e-mail"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password"></td></tr>
<tr><td>First Name:</td><td><input type="text" name="fName"></td></tr>
<tr><td>Last Name:</td><td><input type="text" name="lName"></td></tr>
<tr><td>Date Of Birth:</td><td><input type="text" name="dateOfBirth"></td></tr>
<tr><td>Account Type:</td><td><input type="text" name="type"></td></tr>
<tr><td></td><td><input type="submit" value="Submit"></td></tr>
</table>
</form>
</div>
</body>
还有我的jsp代码
<%
Connection con = null;
String email = request.getParameter("e-mail");
String password = request.getParameter("password");
String firstName = request.getParameter("fName");
String lastName = request.getParameter("lName");
String dob = request.getParameter("dateOfBirth");
String accountType = request.getParameter("type");
String queryText = "insert into user values('" + email + "'+'" + password + "','" + firstName + "','" + lastName + "','" + dob + "','" + accountType + "')";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/project", "root", "B@neswor1");
Statement stat = con.createStatement();
ResultSet rst = stat.executeQuery(queryText);
System.out.println("Data is successfully inserted!");
rst.close();
stat.close();
con.close();
} catch (Exception e) {
}
System.out.println("Success");
%>
请帮我找出我遗漏了什么
2条答案
按热度按时间bcs8qyzn1#
问题的直接原因是insert查询:
如果仔细看,电子邮件文字后面没有逗号。但你本可以用事先准备好的陈述来避免这种情况:
请注意,使用语句可以更容易地查看查询字符串是如何生成的。它还将您从难看的字符串连接和转义中解放出来,这是很容易出错的。
@duffymo指出了代码中的许多其他潜在问题,尽管其中一些问题不一定会导致代码崩溃。我看到的另一个问题是,您的“出生日期”字段被视为一个字符串,它可能应该是一个日期,您应该将其作为日期插入到数据库中。
omqzjyyz2#
此代码有太多错误:
永远不要用jsp编写scriptlet代码。
在scriptlet代码中有一个空的catch块。如果抛出异常,您将永远不会知道它。
关闭finally块中的资源。
您不使用preparedstatement。您正在请求sql注入攻击。
没有xss检查。
未验证输入数据。
如果必须使用jsp,请学习jstl。
请注意,jsp模型是1998年推出的。现代ui是使用html5、css3和javascript与rest服务进行通信的。世界在过去20年里发生了变化。旧技术有教程,但这并不意味着它们应该是你的第一个想法。