代码报错
项目:jsp+servlet+mysql页面注册 2019/3/5
代码
Register.java
package Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class RegServlet
*/
public class RegServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RegServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see Servlet#init(ServletConfig)
*/
private Connection conn;
public void init() throws ServletException {
super.init();
try {
//加载数据库
Class.forName("com.mysql.jdbc.Driver");
//数据库连接url
String url ="jdbc:mysql://localhost:3306/db";
//获取数据库连接
conn = DriverManager.getConnection(url, "root", "123456");
}catch(Exception e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//设置response 和request的编码
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取表单的属性值
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
//判断数据库是否连接成功
if(conn!=null) {
try {
//注入sql
String sql ="insert into aaaa(username,password,email)values(?,?,?)";
//创建PreparedStatement 对象
PreparedStatement ps = conn.prepareStatement(sql);
//对sql语句的参数动态赋值
ps.setString(1, username);
ps.setString(2, password);
ps.setString(3, email);
//执行更新操作
ps.executeUpdate();
//获取PrintWriter对象
PrintWriter out = response.getWriter();
out.println("<h1 aling='center'>");
out.print("注册成功");
out.flush();
out.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
index.jsp
<form action="RegServlet" method="post" onsubmit="return reg(this)">
<table align="center" >
<tr>
<td>用户名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td><input type="submit" value="注册"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
数据库
后台报错
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-register(username,password,email)values('gfgfa','fdf','fdf')' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
出错分析
1.sql语句语法错误
2.字符编码集出错
3.数据库表名有关键字导致出错
总结
表名为db-register导致出错,改为aaaa迎刃而解。