关于JDBC和servlet之间的关联
实现jdbc注册将输入的用户名密码等自动保存在sql建立的表格中
1.先编写注册页面
<%--
Created by IntelliJ IDEA.
User: 26294
Date: 2021/11/30
Time: 9:37
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>用户注册</h2>
<form action="/RegisterServlet" method="post">
用户名:<input type="text" name="username"></br>
密码:<input type="password" name="password"></br>
性别:<input type="text" name="sex"></br>
年龄:<input type="text" name="age"></br>
手机号:<input type="text" name="phone"></br>
<input type="submit" value="提交">
</form>
</body>
</html>
2.写servlet内容
package jdbc;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.function.Predicate;
@WebServlet(name = "RegisterServlet",urlPatterns ="/RegisterServlet")
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
String name=request.getParameter("username");
String psd=request.getParameter("password");
String sex=request.getParameter("sex");
int age= Integer.parseInt(request.getParameter("age"));
String phone=request.getParameter("phone");
PreparedStatement pstmt=null;
Connection conn=null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");//加载数据库驱动
String url="jdbc:mysql://localhost:3306/javawebdb";//指向需要的数据库
String username="root";//数据库用户名
String password="root";//数据库密码
conn= DriverManager.getConnection(url,username,password);
String sql="insert into **register**(name,password,sex,age,phone)values(?,?,?,?,?)";//inser to表格名(参数,参数....)
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setString(2,psd);
pstmt.setString(3,sex);
pstmt.setInt(4,age);
pstmt.setString(5,phone);
int result=pstmt.executeUpdate();
if(result!=0){
response.getWriter().print("insert success");
}
pstmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
response.getWriter().print("错误");
} catch (SQLException e) {
e.printStackTrace();
response.getWriter().print("sql语法错误");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
其实真的不难,但是我在表格选择中耽误了许多时间,最终发现
String url="jdbc:mysql://localhost:3306/javawebdb";//指向需要的数据库,这个javaweb是在mysql中建立的数据库
String sql="insert into **register**(name,password,sex,age,phone)values(?,?,?,?,?)";//inser to表格名(参数,参数....),这个register就是javawebdb数据库中建立的register表格
所以就是在String url中指定数据库,String sql中指定表格