java服务器端开发-servlet:3_1、Servlet使用jdbc访问数据库:增加员工信息插入mysql数据库

目录

一、前言

二、增加员工信息插入mysql数据库

1、html 表单提交代码:addEmp.html

2、配置文件代码:web.xml

3、java代码:AddEmpServlet.java

4、建库建表

(1)登录mysql

(2)查看当前有哪些数据库

(3)创建一个新的数据库

(4)使用某个数据库

(5)查看当前数据库有哪些表

(6)建表

(7)查询表

(8)建库建表,具体操作如下***

5、mysql 最新驱动下载、web项目配置加载驱动

6、效果演示

插入成功,打开终端查看信息

7、执行流程简单介绍

步骤1:浏览器输入地址

步骤2:匹配配置文件 web.xml 

步骤3:java类 ListEmpServlet,进行数据库访问操作,并输出显示

8、整理过程中遇到的异常


一、前言

上一篇文章介绍了一些理论知识点:Servlet使用jdbc访问数据库、mysql的简单使用、重定向等。详见可参考博文:原创 java服务器端开发-servlet:3、Servlet使用jdbc访问数据库、mysql的简单使用、重定向 这篇文章主要介绍案例即Servlet使用jdbc访问数据库:增加员工信息插入mysql数据库

二、增加员工信息插入mysql数据库

既然是入库操作,所以首先你得安装配置mysql数据库,详见博文:原创 Mac系统下MySQL的下载安装、配置教程

1、html 表单提交代码:addEmp.html

<html>
<head>
	<!-- 模拟一个消息头(content-type) content里面内容:“文本/网页,字符编码”-->
	<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<!-- body定义总体样式 -->
<body style="font-size:18px; font-style:fond; color:red; ">
	<!-- action="add",对应web.xml中标签url-pattern里的"/add" -->
	<form action="add" method="post">
		<fieldset>
			<legend>录入员工信息</legend>
				姓名:<input name="name" /><br />
				薪水:<input name="salary" /><br />
				年龄:<input name="age" /><br />
				<input type="submit" value="提交" />
		</fieldset>
	</form>
</body>
</html>

2、配置文件代码:web.xml

把整个配置文件贴出来了,t03 会和 t04 起冲突所以注释了,它只是录入显示员工信息,并没有插入数据库。

本篇文章案例,主要关键参考“ t04_增加员工信息插入mysql”,其他可以无视删掉

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	version="3.1">
	
	<display-name>web02</display-name>
	
	<!-- t01_表单提交中文参数_解决编码问题  -->
	<servlet>
		<servlet-name>web02</servlet-name>
		<servlet-class>t01_表单提交中文参数_解决编码问题.HelloServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>web02</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
	
	<!-- t02_表单提交多个参数_接收响应处理  -->
	<servlet>
		<servlet-name>web02_two</servlet-name>
		<servlet-class>t02_表单提交多个参数_接收响应处理.HelloServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>web02_two</servlet-name>
		<url-pattern>/hello_many</url-pattern>
	</servlet-mapping>
	
	<!-- t03_录入员工数据_感受get和post提交方式 
	t04也是添加员工信息,而我又不想命别的名字,
	为了演示不起冲突,暂时注释t03
	 -->
	<!-- 	
	<servlet>
		<servlet-name>addEmp</servlet-name>
		<servlet-class> t03_录入员工数据_感受get和post提交方式.AddEmpServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>addEmp</servlet-name>
		<url-pattern>/add</url-pattern>
	</servlet-mapping> 
	-->
	
	<!-- t04_增加员工信息插入mysql  -->
	<servlet>
		<servlet-name>addEmp</servlet-name>
		<servlet-class>t04_增加员工信息插入mysql.AddEmpServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>addEmp</servlet-name>
		<url-pattern>/add</url-pattern>
	</servlet-mapping>
	
</web-app>

3、java代码:AddEmpServlet.java

package t04_增加员工信息插入mysql;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 员工信息插入mysql
 * @UpdateTime:2011年02月28日 下午17:30:00
 * @ProjectName: 【项目名】
 * @ClassName:【类名】
 * @CategoryName:【类型】如:Activity
 * @author:luminal、邮箱 luminal_yyh@163.com
 * @since 1.0【版本】
 * @Description:(可以在这里描述这个类的作用)
 * 
 * 员工信息插入mysql的请求地址
 * http://localhost:8080/web02/addEmp.html
 */
public class AddEmpServlet extends HttpServlet{
	public void service(HttpServletRequest request,
			HttpServletResponse response) 
	throws ServletException,IOException{
		
		request.setCharacterEncoding("utf-8");
		
		//读请求参数
		String name = request.getParameter("name");
		String salary = request.getParameter("salary");
		String age = request.getParameter("age");
		
		//服务端验证一定要有,此处省略...
		response.setContentType(
				"text/html;charset=utf-8");
		PrintWriter out = response.getWriter();

		//将员工信息插入数据库【详见JDBC知识点】
		//首先要在mysql里面,建数据库jsd1108db,
		//建表t_emp,才能进行如下操作【mySql建库、表,详见文档】
		Connection conn = null;
		PreparedStatement prep = null;
		try {
			//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
			Class.forName("com.mysql.cj.jdbc.Driver");
			System.out.println("Success loading Mysql Driver!");
			
			conn = 
				DriverManager.getConnection(
						"jdbc:mysql://localhost:3306/jsd1108db",
						"root","你的mysql密码");
			System.out.println("Success connect Mysql server!");  
			
			prep = 
				conn.prepareStatement("insert into " +
						"t_emp(name,salary,age) " +
						"values(?,?,?)");
			prep.setString(1, name);
			//salary写成sal,报NullPointerException
			//执行后面的-->"系统繁忙,稍后重试"
			prep.setDouble(2, Double.parseDouble(salary));
			prep.setInt(3, Integer.parseInt(age));
			prep.executeUpdate();
			
out.println("插入成功");

		} catch (Exception e) {
			//记日志
			e.printStackTrace();
			//判断异常是否能恢复,如果
			//能够恢复,立即恢复;如果不能够
			//恢复(系统异常,比如数据库服务暂停,
			//连接数据库的网络中断),则提示用户稍后重试。
			out.println("系统繁忙,稍后重试");
		}finally{
			if(prep != null){
				try {
					prep.close();
				} catch (SQLException e) {
					//一定不执行,所以日志都没打印了
					}
			}
			if(conn != null){
				try {
					conn.close();
				} catch (SQLException e) {
					
					}
			}
		}
		
		
	}
}

4、建库建表

首先运行web项目演示之前,你需要手动建立好数据库和表

(1)登录mysql

cd /usr/local/mysql/bin

mysql -u root -p

password:q。。。4

(2)查看当前有哪些数据库

show databases;

(3)创建一个新的数据库

比如,创建一个名称jsd1108db的数据库,

该数据库使用的字符集是utf-8

create database jsd1108db default character set utf8;

(4)使用某个数据库

use jsd1108db;

(5)查看当前数据库有哪些表

show tables;

(6)建表

create table t_emp(

id int primary key auto_increment,

name varchar(50),

salary double,

age int

);

(7)查询表

select *from t_emp;

(8)建库建表,具体操作如下***

$ cd /usr/local/mysql/bin
$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.19 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> create database jsd1108db default character set utf8;
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jsd1108db          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use jsd1108db;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table t_emp(
    -> 
    -> id int primary key auto_increment,
    -> 
    -> name varchar(50),
    -> 
    -> salary double,
    -> 
    -> age int
    -> 
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+---------------------+
| Tables_in_jsd1108db |
+---------------------+
| t_emp               |
+---------------------+
1 row in set (0.00 sec)

mysql> select *from t_emp;
Empty set (0.00 sec)

mysql> 

 

5、mysql 最新驱动下载、web项目配置加载驱动

官网下载地址:https://dev.mysql.com/downloads/connector/j/

下载以后解压,如下图:

     

web项目配置加载驱动

把解压的 jar 包,拷贝到 WebRoot/WEB-INF/lib/ 目录下,然后进行如下操作:

  

6、效果演示

下面我们来操作演示一下:启动tomact,部署web项目,在谷歌浏览器输入:http://localhost:8080/web02/addEmp.html

     

插入成功,打开终端查看信息

我提交的两条数据,都可以看到了。

7、执行流程简单介绍

步骤1:浏览器输入地址

http://localhost:8080/web02/addEmp.html

找到并打开 addEmp.html

步骤2:匹配配置文件 web.xml 

html 文件 addEmp.html 中的<form action="add" method="post">  对应

配置文件 web.xml 中 <url-pattern>的 /add

	<!-- t04_增加员工信息插入mysql  -->
	<servlet>
		<servlet-name>addEmp</servlet-name>
		<servlet-class>t04_增加员工信息插入mysql.AddEmpServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>addEmp</servlet-name>
		<url-pattern>/add</url-pattern>
	</servlet-mapping>

然后它会找到 java包、类AddEmpServlet

步骤3:java类 ListEmpServlet,进行数据库访问操作,并输出显示

 

8、整理过程中遇到的异常

整理期间出现两个异常以及解决方式:

(1)"com.mysql.jdbc.Driver" 提示被弃用

//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");

(2)原创 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值