jsp&servlet&jdbc&mysql实现简单的增删查改(一)

1.关于JDBC

JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,是Java和数据库之间的一个桥梁,它由一组用Java语言编写的类和接口组成,各种不同类型的数据库都有相应的实现类。

JDBC为开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,是数据库开发人员能够使用java API编写数据库应用程序,并且可以跨平台运行,且不受数据库供应商的限制。

JDBC为我么提供了java连接数据库的驱动,而这个驱动也是由java开发出来的,可以通过这个驱动,使用java连接到数据库,对数据库进行相应的管理操作。

2.对数据库进行增添记录的操作

以一个简单注册界面的实现为例

具体步骤:
(1)打开xampp,启动Mysql
方法一:直接双击应用程序,在MySQL后面点击“start”
方式二:通过命令行的方式打开
在这里插入图片描述
(2)打开Navicat,选择一个数据库建立相应的表用来存放注册信息,并设计表中的字段。(也可以使用数据库中之前建好的表)在这里插入图片描述
(3)打开eclipse,在当前项目中的WebContent目录下新建一个jsp文件,添加代码,使得注册界面显示与数据库中表里面设计的字段相对应

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
	<form action="/blog/SignupServlet" method=post >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;箱:<input name="email" type="text" placeholder="填写邮箱" /><br/><p></p>
		手机号码:<input name="phoneNumber" type="text" /><br /><p></p>
		登录名称:<input name="username" type="text" /><br /><p></p>
		显示昵称:<input name="nickname" type="text" /><br /><p></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:<input name="password" type="password" /><br /><p></p>
		确认密码:<input name="confirmPassword" type="password" /><br /> 
		<p><input type="submit" /></p>
	</form>
</body>
</html>

显示效果:
在这里插入图片描述
(4)新建一个Servlet文件,命名为SignupServlet,与上面jsp文件代码中选择的action 的文件名一致(也可以在新建jsp文件的时候建好),并且上面代码中选择的method为post,所以我们选择在Servlet中Dopost()方法中编辑源代码。

先对参数的添加条件进行设置:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
//		定义变量接收请求参数
		String email = request.getParameter("email");
		String phoneNumber = request.getParameter("phoneNumber");
		String username = request.getParameter("username");
		String nickname = request.getParameter("nickname");
		String password = request.getParameter("password");
		String confirmPassword = request.getParameter("confirmPassword");
		
//      为添加的信息设置限制条件 
		boolean error = false;
		String errorMsg = "";
		//方式一:导入专用jar包(commons-lang3-3.9.jar)方可调用StringUtils.方法
		if (StringUtils.isEmpty(email)) {
			error = true;
			errorMsg = "邮箱不允许为空";
		}else if (StringUtils.isEmpty(password)) {
			error = true;
			errorMsg = "密码不允许为空";
		} else if (!StringUtils.equals(password, confirmPassword)) {
			error = true;
			errorMsg = "两次输入的密码不一致";
		}
		//方式二:
//      if (email == null) {
//			error = true;
//			errorMsg = "邮箱不允许为空";
//		} else if (password == null) {
 //         error = true;
//			errorMsg = "密码不允许为空";
//		} else if (!password.equals(confirmPassword)) {
//			error = true;
//			errorMsg = "两次输入的密码不一致";
//		}

		if (error) {
			request.setAttribute("errorMsg", errorMsg);
			RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");//如果出现错误则跳转到error.jsp页面
			dispatcher.forward(request, response);
			return;
		}

error.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>提示</title>
</head>
<body>
	<!-- EL表达式 -->
	提示: ${errorMsg}

</body>
</html>

以下内容十分重要!!!
JDBC编程步骤:

① 导入专用jar包(不同的数据库可能需要的jar包不一样),我这里导入的是mysql-connector-java-5.1.9.jar
将下载好的包copy到WebContent/Web-INF/lib下,如果没有完成,则会抛出 ClassNotFoundException。

② 初始化驱动类com.mysql.jdbc.Driver ,该类就在导入的jar包中。

③ 建立JDBC与数据库之间的连接,此处需要提供数据库所在电脑的IP地址,数据库的端口号,数据库名(使用的表所在的数据库),编码方式(UTF-8),以及数据库的账号和密码。
在这里插入图片描述
②③只要是需要连接数据库,对其进行管理操作,基本都会用到,所以可以将其封装在一个工具类中,用时直接调用,减少麻烦

package com.dlj.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil { 
	
	public static Connection getConnection() {
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");// 初始化驱动类com.mysql.jdbc.Driver,将类加载到JVM中
			conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8", "root", "");//与数据库建立连接
		} catch (ClassNotFoundException e) {//捕获初始化异常
			e.printStackTrace();
		} catch (SQLException e) {//捕获连接异常
			e.printStackTrace();
		}
		return conn;//返回连接
	}
}

④创建Statement接口

⑤执行SQL语句

⑤关闭连接
代码:

	Connection connection = null;
	Statement statement=null;
	try {
		connection = (Connection) DBUtil.getConnection();//调用封装的工具方法,连接数据库
		statement = (Statement) connection.createStatement();//创建Statement接口
		String sql = "insert into t_user(email, phone_number, username, nickname, password, create_time, update_time) values('"
					+ email + "', '" + phoneNumber + "', '" + username + "', '" + nickname + "', '" + password+ "', now(), now())";// 准备sql语句
		System.out.println(sql);
		boolean success = statement.execute(sql);//执行sql语句
		System.out.println("执行结果:" + success);//打印执行结果,注意:当打印结果为false,不表示执行失败,具体可查看Statement调用方法的源码
			//捕获try操作中的异常
	 } catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
		errorMsg = e.getMessage();
		//关闭,必须得有
 	 } finally {
		if (connection != null) {
			try {
				connection.close();
			} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			}
		}
		if (statement != null) {
			try {
				statement.close();
			} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			}
		}
	}

	request.setAttribute("errorMsg", errorMsg);
	RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");
	dispatcher.forward(request, response);

完成后,在注册界面进行操作,命令行显示结果:
在这里插入图片描述
查看表结果:
在这里插入图片描述

发布了49 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ashleyjun/article/details/99688886
今日推荐