今天在写用户注册功能的代码时,当通过servlet接收表单数据并保存到数据库时,没有出现任何错误,但是在数据库中查看,第一列用户名显示为空,无论如何检查都感觉是对的,后来再把jsp代码和servlet代码结合着看的时候,终于发现了错误:
在写jsp页面时,对用户名所给的名字,在servlet接收时要对应,不然它不会报错,但是数据库中存储的数据却为空,下面具体看代码:
这是写的一个简单的jsp用户注册页面,给用户名的名字是username,密码的名字是keyword,学号的名字是num
<body>
<form action="servlet/Login" method="post">
用户名:<input type="text" name="username"> <br/>
密 码 :<input type="keyword" name="keyword"><br/>
学 号:<input type="num" name="num"><br/>
<input type="submit" value="注册">
</form>
</body>
下面是获取表单信息,并保存到数据库中的servlet,注意获取信息时名字要和jsp提交的信息一致,
response.setContentType("text/html;charset=UTF-8");
//获取输入信息
String member = request.getParameter("username");
String keyword = request.getParameter("keyword");
String num = request.getParameter("num");
//连接数据库
String url = "jdbc:mysql://localhost:3306/thecheck";
String user="root";
String password = "19960104";
try {
Class.forName("com.mysql.jdbc.Driver");
try {
java.sql.Connection conn = DriverManager.getConnection(url, user, password);
java.sql.Statement st = conn.createStatement();
String sql = "insert into student values("+"'"+member+"',"+"'"+keyword+"',"+"'"+num+"',"+"0)";
//System.out.println(sql);
st.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
其中还要注意的是写的输入语句要和数据库中的sql语句对应,否则也会出现错误。