三、添加员工的功能

添加数据

从数据库中添加编号为1的员工,效果图如下:

java编写员工类 java添加员工怎么写_java编写员工类


刷新http://localhost:8080/servlettest/list,显示结果如下:

java编写员工类 java添加员工怎么写_mysql_02

创建一个页面

第一步:

添加一个页面,名称为addemp.html注意:在WebRoot,右击新建页面

自动生成代码,如图显示:

java编写员工类 java添加员工怎么写_java_03


修改代码:

java编写员工类 java添加员工怎么写_jsp_04

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>添加员工信息</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <!-- 不写默认是get方式 -->
  	<form action="" method="">
  		<h2>添加员工信息</h2>
  		编号:<input type="text" name="id"/><br/>
  		姓名:<input type="text" name="name"/><br/>
  		密码:<input type="password" name="pwd"/><br/>
  		工资:<input type="text" name="salary"/><br/>
  		生日:<input type="text" name="birthday"/><br/>
  		<input type="submit" name="smt" value="添加"/>
  	</form>
  </body>
</html>

第二步:

测试addemp.html

若在浏览器中输入http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_java_05


java编写员工类 java添加员工怎么写_java编写员工类_06

第三步:

package com.bzxy.emp;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//服务器端的Servlet -- 员工信息显示的
public class EmpListServlet extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1)在该servlet中要将mysql数据库中的数据获取到(jdbc)
		ResultSet rs = null;
		try {
			//① 注册加载驱动 (需要在Web项目中,引入的mysqlxx.jar包需要注册加载后才能正常使用)
			//!Java项目不需要,Web项目
			Class.forName("com.mysql.jdbc.Driver");
			//② 获得数据库mysql的连接
			//jdbc、mysql、localhost(本地地址)、3306(端口号)、test1(库名)
			String url = "jdbc:mysql://localhost:3306/test1";
			String username = "root";
			String pwd = "";
			Connection con = DriverManager.getConnection(url, username, pwd);
			System.out.println("连接为:" + con);
			//③ 预编译sql语句
			String sql = "select * from emp";
			PreparedStatement prep = con.prepareStatement(sql);
			//④ 执行sql语句,获得结果集
			rs = prep.executeQuery();
			//先将结果集rs中数据输出在控制台上测试一下
			/*
			while (rs.next()) {
				System.out.println(rs.getInt("id") + "," + rs.getString("name") + "," + rs.getString("pwd")+ ","
						 + rs.getDouble("salary") + "," + rs.getDate("birthday"));
			}
			*/
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//2)在该Servlet中将获取的数据显示在页面中
		response.setContentType("text/html;charset=utf-8");
		try {
			//获得PrintWriter,向页面端写内容
			PrintWriter pw = response.getWriter();
			//使用pw向页面输出一个表格
			pw.println("<table border='1' cellspacing='0' width='600' align='center'>");
			//表格的标题
			pw.println("<caption>员工信息表</caption>");
			//表格的第一行 编号、姓名、密码、工资、
			pw.println("<tr align='center'><td>编号</td><td>姓名</td><td>密码</td><td>工资</td><td>生日</td><td>操作</td></tr>");
			//表格的第二行到第N行
			while (rs.next()) {
				//pw.println(rs.getInt("id") + "," + rs.getString("name") + "," + rs.getString("pwd")+ ","
						 //+ rs.getDouble("salary") + "," + rs.getDate("birthday") + "<br/>");
				pw.println("<tr align='center'><td>" + rs.getInt("id")+ "</td><td>" + rs.getString("name") + "</td><td>"
						+ rs.getString("pwd") + "</td><td>" + rs.getDouble("salary") + "</td><td>"
						+ rs.getDate("birthday") + "</td><td>删除</td></tr>");
			}
			//表格的最后一行
			pw.println("<tr><td colspan='6'><a href='http://www.baidu.com'>点我添加员工信息</a></td></tr>");
			pw.println("</table>");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}

修改代码为:

java编写员工类 java添加员工怎么写_jsp_07

第四步:

若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_08


java编写员工类 java添加员工怎么写_java_09


点击添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_java_05


java编写员工类 java添加员工怎么写_jdbc_11

创建一个servlet

名为EmpDeleteServlet,以下是属性修改url地址改为/deleteweb.xml在原来基础上自动添加相应代码,我们对其添加注释

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<!-- 对com.bzxy.test包下的HelloServlet进行配置 -->
	<servlet>
		<servlet-name>hello</servlet-name> <!-- 对要配置的Servlet起别名 -->
		<servlet-class>com.bzxy.test.HelloServlet</servlet-class> <!-- 配置的Servlet的位置,写所在的包名+类名即可 -->
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name> <!-- 要和上面的servlet-name的内容保持一致 -->
		<url-pattern>/ho</url-pattern> <!-- 浏览器访问服务器端servlet的url地址 -->
	</servlet-mapping>

	<!-- 对com.bzxy.test包下的RegisteServlet进行配置 -->
	<servlet>
		<servlet-name>RegisteServlet</servlet-name> <!-- 对要配置的Servlet起别名 -->
		<servlet-class>com.bzxy.test.RegisteServlet</servlet-class> <!-- 配置的Servlet的位置,写所在的包名+类名即可 -->
	</servlet>
	<!-- 对com.bzxy.emp包下的EmpListServlet进行配置 -->
	<servlet>
		<servlet-name>EmpListServlet</servlet-name>
		<servlet-class>com.bzxy.emp.EmpListServlet</servlet-class>
	</servlet>
	<!-- 对com.bzxy.emp包下的EmpDeleteServlet进行配置 -->
	<servlet>
		<servlet-name>EmpDeleteServlet</servlet-name>
		<servlet-class>com.bzxy.emp.EmpDeleteServlet</servlet-class>
	</servlet>
	<!-- 对com.bzxy.emp包下的EmpAddServlet进行配置 -->
	<servlet>
		<servlet-name>EmpAddServlet</servlet-name>
		<servlet-class>com.bzxy.emp.EmpAddServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>RegisteServlet</servlet-name> <!-- 要和上面的servlet-name的内容保持一致 -->
		<url-pattern>/registe</url-pattern> <!-- 浏览器访问服务器端servlet的url地址 -->
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>EmpListServlet</servlet-name>
		<url-pattern>/list</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>EmpDeleteServlet</servlet-name>
		<url-pattern>/delete</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>EmpAddServlet</servlet-name>
		<url-pattern>/add</url-pattern>
	</servlet-mapping>
</web-app>

测试:

若不连接add.html

java编写员工类 java添加员工怎么写_jdbc_12


add.html中修改代码:

java编写员工类 java添加员工怎么写_mysql_13


若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_14


java编写员工类 java添加员工怎么写_jdbc_15


点击添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_16


输入员工信息,如图显示:

java编写员工类 java添加员工怎么写_java_17


点击添加后,地址栏变化,如图显示:

java编写员工类 java添加员工怎么写_java_18

若连接add.html

add.html中修改代码:

java编写员工类 java添加员工怎么写_java编写员工类_19


若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_14


java编写员工类 java添加员工怎么写_jdbc_15


点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_16


输入员工信息,如图显示:

java编写员工类 java添加员工怎么写_java_17


点击添加后,地址栏变化,如图显示:

java编写员工类 java添加员工怎么写_jsp_24

代码部分:

package com.bzxy.emp;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//服务器端的servlet -- 添加员工的信息
public class EmpAddServlet extends HttpServlet {

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("测试doPost...");
	}
}

最终控制台显示,说明测试无误:

java编写员工类 java添加员工怎么写_jsp_25

接收addemp.html页面中表单提交的数据

第一步:

关于接收addemp.html页面中表单提交的数据,可参照两个方面,任意一个都可

add.html

java编写员工类 java添加员工怎么写_java_26


② 前面不连接add.html,输入员工信息后,自动跳转的地址:

java编写员工类 java添加员工怎么写_java_18

第二步:

EmpAddServlet.java代码部分为:

package com.bzxy.emp;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//服务器端的servlet -- 添加员工的信息
public class EmpAddServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//http://localhost:8080/servlettest/addemp.html
		//?id=1001&name=ww&pwd=1234&salary=12333&birthday=2020-04-09&smt=%E6B7%BB%E5%8A%A0
		//1)接收addemp.html页面中表单提交的数据
		String strId = request.getParameter("id"); //1001 "1001"
		String strName = request.getParameter("name");
		String strPwd = request.getParameter("pwd");
		String strSalary = request.getParameter("salary");
		String strBirthday = request.getParameter("birthday");
		System.out.println(strId + "," + strName + "," + strPwd + "," + strSalary + "," + birthday);
		//输出结果为:1001,ww,1234,12333,2020-04-09
		
		//2)将接收到的数据,通过jdbc连接数据库,插入到数据库中
		
		//3)插入成功以后,需要重新回到http://localhost:8080/servlettest/list地址的页面
		
		//System.out.println("测试doPost...");
	}
}

若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_14


java编写员工类 java添加员工怎么写_jdbc_15


点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_16


输入员工信息,如图显示:

java编写员工类 java添加员工怎么写_mysql_31


点击添加后,控制台显示如图所示:

java编写员工类 java添加员工怎么写_java编写员工类_32

bug:

EmpAddServlet.java代码部分,写错了,如图下所示:

java编写员工类 java添加员工怎么写_jsp_33


则控制台显示如图所示:

java编写员工类 java添加员工怎么写_jsp_34

将接收到的数据,通过jdbc连接数据库,插入到数据库中

第一步:

EmpAddServlet.java局部测试,代码如下:

package com.bzxy.emp;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//服务器端的servlet -- 添加员工的信息
public class EmpAddServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//http://localhost:8080/servlettest/addemp.html
		//?id=1001&name=ww&pwd=1234&salary=12333&birthday=2020-04-09&smt=%E6B7%BB%E5%8A%A0
		//1)接收addemp.html页面中表单提交的数据
		String strId = request.getParameter("id"); //1001 "1001"
		String strName = request.getParameter("name");
		String strPwd = request.getParameter("pwd");
		String strSalary = request.getParameter("salary");
		String birthday = request.getParameter("birthday");
		System.out.println(strId + "," + strName + "," + strPwd + "," + strSalary + "," + strBirthday);
		//输出结果为:1001,ww,1234,12333,2020-04-09
		
		//2)将接收到的数据,通过jdbc连接数据库,插入到数据库中
		try {
			//①注册加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//②获得数据库的连接
			String url = "jdbc:mysql://localhost:3306/test1";
			String username = "root";
			String pwd = "";
			Connection con = DriverManager.getConnection(url, username, pwd);
			System.out.println(con); //com.mysql.jdbc.JDBC4Connection@1a2f5b1
			//③预编译sql语句
			
			//④执行sql语句
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//3)插入成功以后,需要重新回到http://localhost:8080/servlettest/list地址的页面
		
		//System.out.println("测试doPost...");
	}
}

若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_14


java编写员工类 java添加员工怎么写_jdbc_15


点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_16


输入员工信息,如图显示:

java编写员工类 java添加员工怎么写_mysql_31


点击添加后,控制台显示如图所示:控制台显示:

java编写员工类 java添加员工怎么写_mysql_39

第二步:

继续添加EmpAddServlet.java代码,如下:

package com.bzxy.emp;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//服务器端的servlet -- 添加员工的信息
public class EmpAddServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//http://localhost:8080/servlettest/addemp.html
		//?id=1001&name=ww&pwd=1234&salary=12333&birthday=2020-04-09&smt=%E6B7%BB%E5%8A%A0
		//1)接收addemp.html页面中表单提交的数据
		String strId = request.getParameter("id"); //1001 "1001"
		String strName = request.getParameter("name");
		String strPwd = request.getParameter("pwd");
		String strSalary = request.getParameter("salary");
		String birthday = request.getParameter("birthday");
		System.out.println(strId + "," + strName + "," + strPwd + "," + strSalary + "," + birthday);
		//输出结果为:1001,ww,1234,12333,2020-04-09
		
		//2)将接收到的数据,通过jdbc连接数据库,插入到数据库中
		try {
			//①注册加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//②获得数据库的连接
			String url = "jdbc:mysql://localhost:3306/test1";
			String username = "root";
			String pwd = "";
			Connection con = DriverManager.getConnection(url, username, pwd);
			System.out.println(con); //com.mysql.jdbc.JDBC4Connection@1a2f5b1
			//③预编译sql语句
			String sql = "insert into emp values(?,?,?,?,?)";
			PreparedStatement prep = con.prepareStatement(sql);
			prep.setInt(1, Integer.parseInt(strId)); //将字符串类型转换为int类型
			prep.setString(2, strName);
			prep.setString(3, strPwd);
			prep.setDouble(4, Double.parseDouble(strSalary)); //将字符串类型转换为Double类型
			prep.setString(5, birthday); //mysql日期类型以字符串的方式插入"2020-04-09"
			//④执行sql语句
			prep.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//3)插入成功以后,需要重新回到http://localhost:8080/servlettest/list地址的页面
		
		//System.out.println("测试doPost...");
	}
}

若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_14


java编写员工类 java添加员工怎么写_jdbc_15


点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_16


输入员工信息,如图显示:

java编写员工类 java添加员工怎么写_mysql_31


点击添加后,输入http://localhost:8080/servlettest/list地址,显示如图所示:

java编写员工类 java添加员工怎么写_jsp_44


mysql中显示,说明插入成功

java编写员工类 java添加员工怎么写_java编写员工类_45

插入成功以后,需要重新回到http://localhost:8080/servlettest/list地址的页面

只需添加一条代码即可

java编写员工类 java添加员工怎么写_java_46

代码部分:

package com.bzxy.emp;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//服务器端的servlet -- 添加员工的信息
public class EmpAddServlet extends HttpServlet {

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//http://localhost:8080/servlettest/addemp.html
		//?id=1001&name=ww&pwd=1234&salary=12333&birthday=2020-04-09&smt=%E6B7%BB%E5%8A%A0
		//1)接收addemp.html页面中表单提交的数据
		String strId = request.getParameter("id"); //1001 "1001"
		String strName = request.getParameter("name");
		String strPwd = request.getParameter("pwd");
		String strSalary = request.getParameter("salary");
		String birthday = request.getParameter("birthday");
		System.out.println(strId + "," + strName + "," + strPwd + "," + strSalary + "," + birthday);
		//输出结果为:1001,ww,1234,12333,2020-04-09
		
		//2)将接收到的数据,通过jdbc连接数据库,插入到数据库中
		try {
			//①注册加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//②获得数据库的连接
			String url = "jdbc:mysql://localhost:3306/test1";
			String username = "root";
			String pwd = "";
			Connection con = DriverManager.getConnection(url, username, pwd);
			System.out.println(con); //com.mysql.jdbc.JDBC4Connection@1a2f5b1
			//③预编译sql语句
			String sql = "insert into emp values(?,?,?,?,?)";
			PreparedStatement prep = con.prepareStatement(sql);
			prep.setInt(1, Integer.parseInt(strId)); //将字符串类型转换为int类型
			prep.setString(2, strName);
			prep.setString(3, strPwd);
			prep.setDouble(4, Double.parseDouble(strSalary)); //将字符串类型转换为Double类型
			prep.setString(5, birthday); //mysql日期类型以字符串的方式插入"2020-04-09"
			//④执行sql语句
			prep.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//3)插入成功以后,需要重新回到http://localhost:8080/servlettest/list地址的页面
		response.sendRedirect("list");
		
		//System.out.println("测试doPost...");
	}
}

注意:添加的员工,编号不能与数据库中员工编号相同,因为id设了primary主键

若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_14


java编写员工类 java添加员工怎么写_jsp_44


点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:

java编写员工类 java添加员工怎么写_mysql_16


输入员工信息,如图显示:

java编写员工类 java添加员工怎么写_java编写员工类_50


点击添加后,自动跳转:http://localhost:8080/servlettest/list,如图显示,说明添加成功!

java编写员工类 java添加员工怎么写_java_51