JavaWeb程序设计学习笔记整理(6)-添加员工

三、添加员工的功能

添加数据

从数据库中添加编号为1的员工,效果图如下:
在这里插入图片描述
刷新http://localhost:8080/servlettest/list,显示结果如下:
在这里插入图片描述

创建一个页面

第一步:

添加一个页面,名称为addemp.html
注意:在WebRoot,右击新建页面
自动生成代码,如图显示:
在这里插入图片描述
修改代码:
在这里插入图片描述

<!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,则如图下显示:
在这里插入图片描述
在这里插入图片描述

第三步:

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();
		}
	}

}

修改代码为:
在这里插入图片描述

第四步:

若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:
在这里插入图片描述
在这里插入图片描述
点击添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:
在这里插入图片描述
在这里插入图片描述

创建一个servlet

名为EmpDeleteServlet,以下是属性修改url地址改为/delete
web.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

在这里插入图片描述
add.html中修改代码:
在这里插入图片描述
若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:
在这里插入图片描述
在这里插入图片描述
点击添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:
在这里插入图片描述
输入员工信息,如图显示:
在这里插入图片描述
点击添加后,地址栏变化,如图显示:
在这里插入图片描述

若连接add.html

add.html中修改代码:
在这里插入图片描述
若在浏览器中输入http://localhost:8080/servlettest/list,则如图下显示:
在这里插入图片描述
在这里插入图片描述
点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:
在这里插入图片描述
输入员工信息,如图显示:
在这里插入图片描述
点击添加后,地址栏变化,如图显示:
在这里插入图片描述

代码部分:
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...");
	}
}

最终控制台显示,说明测试无误:
在这里插入图片描述

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

第一步:

关于接收addemp.html页面中表单提交的数据,可参照两个方面,任意一个都可
add.html在这里插入图片描述
② 前面不连接add.html,输入员工信息后,自动跳转的地址:
在这里插入图片描述

第二步:

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,则如图下显示:
在这里插入图片描述
在这里插入图片描述
点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:
在这里插入图片描述
输入员工信息,如图显示:
在这里插入图片描述
点击添加后,控制台显示如图所示:
在这里插入图片描述

bug:

EmpAddServlet.java代码部分,写错了,如图下所示:
在这里插入图片描述
则控制台显示如图所示:
在这里插入图片描述

将接收到的数据,通过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,则如图下显示:
在这里插入图片描述
在这里插入图片描述
点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:
在这里插入图片描述
输入员工信息,如图显示:
在这里插入图片描述
点击添加后,控制台显示如图所示:

控制台显示:
在这里插入图片描述

第二步:

继续添加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,则如图下显示:
在这里插入图片描述
在这里插入图片描述
点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:
在这里插入图片描述
输入员工信息,如图显示:
在这里插入图片描述
点击添加后,输入http://localhost:8080/servlettest/list地址,显示如图所示:
在这里插入图片描述
mysql中显示,说明插入成功
在这里插入图片描述

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

只需添加一条代码即可
在这里插入图片描述

代码部分:

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,则如图下显示:
在这里插入图片描述
在这里插入图片描述
点击点我添加员工信息,自动跳转http://localhost:8080/servlettest/addemp.html,则如图下显示:
在这里插入图片描述
输入员工信息,如图显示:
在这里插入图片描述
点击添加后,自动跳转:http://localhost:8080/servlettest/list,如图显示,说明添加成功!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值