JDBC实现简单的多数据注册(数据封装)
(初学者笔记)
- 首先用户在网页上输入注册信息,此信息由form表单提交给Servlet(jsp经编译后就变成了Servlet。Servlet是由服务器调用的,运行在服务器端。)。
Jsp部分代码:
<form action=" /admin_douseradd" method="post" id="myform" name="myform">
<table class="insert-tab" width="100%">
<tbody>
<tr>
<th><i class="require ">*</i>用户姓名:</th>
<td>
<input class="common-text " id="title" name="username" size="50" value="" type="text">
</td>
</tr>
<tr>
<th><i class="require ">*</i>用户密码:</th>
<td>
<input class="common-text " id="title" name="password" size="50" value="" type="text">
</td>
</tr>
<tr>
<th><i class="require ">*</i>年龄:</th>
<td>
<input class="common-text " id="title" name="age" size="50" value="" type="text">
</td>
</tr>
<tr>
<th>电子邮件:</th>
<td>
<input class="common-text" id="title" name="email" size="50" value="" type="text">
</td>
</tr>
<tr>
<th>手机号码:</th>
<td>
<input class="common-text" id="title" name="mobile" size="50" value="" type="text">
</td>
</tr>
</tbody>
</table>
</form>
- 创建servlet文件
(本文件实现功能:数据被提交到本文件中,并把数据写入数据库中)
servlet文件代码:
import java.io.IOException;
import java.io.PrintWriter;
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 com.wxh.MONKEY_USER;
import com.wxh.service.MONKEY_USERDao;
/**
* Servlet implementation class DoUserAdd
*/
@WebServlet("/admin_douseradd")
//提交到admin_douseradd
public class DoUserAdd extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public DoUserAdd() {
super();
// TODO Auto-generated constructor stub
}
/**
* @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 {
//1.获取到数据集
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username")
String pwd = request.getParameter("password");
String sex = request.getParameter("sex");
String email = request.getParameter("email");
String mobile = request.getParameter("mobile");
//2.创建用户实体(调用了MONKEY_USER类)
MONKEY_USER u = new MONKEY_USER(username,name,pwd,sex,year,null,email,mobile,adress,1);
//3.写入数据库(调用了MONKEY_USERDao类)
int count = MONKEY_USERDao.insert(u);
//4.成功或失败重定向
if(count>0) {
//重定向到admin_user.jsp文件
response.sendRedirect("admin_user.jsp");
//控制台输出插入成功
System.out.print(“插入成功”);
}else {
PrintWriter out = response.getWriter();
out.write("<script>");
out.write("alert('用户添加失败')");
out.write("location.herf='/manage/admin_useradd.jsp'");
out.write("</script>");
}
}
}
- MONKEY_USER类(创建的实体类:对对象实体进行封装,方便操作)
public class MONKEY_USER {
private String USER_NAME;
private String USER_PASSWORD;
private String USER_SEX;
private String USER_EMAIL;
private String USER_MOBILE;
//创建构造方法
public MONKEY_USER(String uSER_NAME, String uSER_PASSWORD, String uSER_SEX, String uSER_EMAIL, String uSER_MOBILE) {
super();
USER_NAME = uSER_NAME;
USER_PASSWORD = uSER_PASSWORD;
USER_SEX = uSER_SEX;
USER_EMAIL = uSER_EMAIL;
USER_MOBILE = uSER_MOBILE;
}
public String getUSER_NAME() {
return USER_NAME;
}
public void setUSER_NAME(String uSER_NAME) {
USER_NAME = uSER_NAME;
}
public String getUSER_PASSWORD() {
return USER_PASSWORD;
}
public void setUSER_PASSWORD(String uSER_PASSWORD) {
USER_PASSWORD = uSER_PASSWORD;
}
public String getUSER_SEX() {
return USER_SEX;
}
public void setUSER_SEX(String uSER_SEX) {
USER_SEX = uSER_SEX;
}
public String getUSER_EMAIL() {
return USER_EMAIL;
}
public void setUSER_EMAIL(String uSER_EMAIL) {
USER_EMAIL = uSER_EMAIL;
}
public String getUSER_MOBILE() {
return USER_MOBILE;
}
public void setUSER_MOBILE(String uSER_MOBILE) {
USER_MOBILE = uSER_MOBILE;
}
}
- MONKEY_USERDao类(专门处理用户的增删改)
MONKEY_USERDao.java
package com.wxh.service;
import com.wxh.MONKEY_USER;
import com.wxh.dao.Basedao;
//数据库插入数据
public class MONKEY_USERDao {
public static int insert(MONKEY_USER u){
String sql = "insert into MONKEY_USER values(?,?,?,?,DATE_FORMAT(?,'%Y-%m-%d'),?,?,?,?,?)";
//DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
//DATE_FORMAT(date,format)date 参数是合法的日期。format 规定日期/时间的输出格式。
//用户参数改成Object对象
Object[] params = {
u.getUSER_NAME(),
u.getUSER_PASSWORD(),
u.getUSER_SEX(),
u.getUSER_EMAIL(),
u.getUSER_MOBILE()};
return Basedao.exectuIUD(sql, params);
}
}
- JDBC数据库连接代码(Basedao.java)
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
public class Basedao {
//静态代码块
static {
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getconnection () {
//1.获取数据库连接(mysql-5.7.17)
Connection connection = null;
try {
connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/day?useUnicode=true&characterEncoding=utf-8","root","root");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
//数据库增删改
public static int exectuIUD(String sql,Object[] params) {
int count = 0;
//获取连接
Connection connection = Basedao.getconnection();
//准备SQL
PreparedStatement ps = null;
//插入
try {
//预编译sql语句,返回PreparedStatement的实例
ps = conn.prepareStatement(sql);
//绑定参数
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1,params[i]);
}
count = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
Basedao.closeall(null, ps, conn);
}
return count;
}
//关闭
public static void closeall(ResultSet rs,PreparedStatement ps,Connection conn) {
try {
if(rs!=null) {
rs.close();
}
if (ps!=null) {
ps.close();
}
if (conn!=null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}