目录
1、java代码- 查询员工数据列表显示:ListEmpServlet.java
2、java代码-编辑修改数据:LoadEmpServlet.java
3、java代码-得到编辑提交的数据,更新到数据库:UpdateEmpServlet.java
一、前言
上一篇文章我们介绍了:Servlet使用jdbc访问数据库,如何删除个人、所有员工信息,然后重定向到员工列表,详细可参考博文:java服务器端开发-servlet:3_5、Servlet使用jdbc访问数据库:删除个人、所有员工信息,重定向到员工列表 这篇文章我们将介绍Servlet使用jdbc访问数据库:修改更新员工信息
二、效果演示
1、查询员工数据列表
启动tomact,部署web项目,在谷歌浏览器输入:http://localhost:8080/web06/show
2、修改某位员工数据
点击右边修改即可,我这里分别修改了两条数据如下:
依次修改提交后,最终的效果如下图
三、具体代码-修改更新员工信息
1、java代码- 查询员工数据列表显示:ListEmpServlet.java
package t10_修改员工信息_重定向到员工列表;
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;
/**
* 查询员工数据列表显示
*/
public class ListEmpServlet extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Connection conn = null;
PreparedStatement prep = null;
ResultSet rst = null;
try {
//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jsd1108db",
"root","你的mysql密码");
prep = conn.prepareStatement(
"select * from t_emp");
rst = prep.executeQuery();
out.println("<table border='1' width='60%' " +
"cellpadding='0' cellspacing='0'>");
out.println("<caption>"+"员工信息表"+"</caption>");//表头
out.println("<tr><td>ID</td><td>姓名</td>" +
"<td>薪水</td><td>年龄</td>" +
"<td>操作</td></tr>");
//循环期间(遍历结果集),Connection连接不能关闭
//如果先放到集合里面,就没问题
while(rst.next()){
int id = rst.getInt("id");
String name = rst.getString("name");
double salary =rst.getDouble("salary");
int age = rst.getInt("age");
out.println("<tr><td>" + id
+ "</td><td>" + name
+ "</td><td>" + salary
+"</td><td>" + age
+ "</td><td>" +
"<a href='load?id="
+ id + "'>修改</a></td></tr>");
}
out.println("</table>");
//out.println("<a href='addEmp.html'>添加新员工</a>");
} catch (Exception e) {
e.printStackTrace();
out.println("系统繁忙,稍后重试");
}finally{
if(rst != null){
try {
rst.close();
} catch (SQLException e) {
}
}
if( prep != null){
try {
prep.close();
} catch (SQLException e) {
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
}
2、java代码-编辑修改数据:LoadEmpServlet.java
package t10_修改员工信息_重定向到员工列表;
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;
/**
* 编辑修改数据,提交到--->UpdateEmpServlet
*/
public class LoadEmpServlet extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
int id = Integer.parseInt(request.getParameter("id"));
Connection conn = null;
PreparedStatement prep = null;
ResultSet rst = null;
try {
//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jsd1108db",
"root","你的mysql密码");
prep = conn.prepareStatement(
"select * from t_emp where id=?");
prep.setInt(1, id);
rst = prep.executeQuery();
if(rst.next()){
String name = rst.getString("name");
double salary = rst.getDouble("salary");
int age = rst.getInt("age");
out.println("<form action='update?id=" + id + "' method='post'>");
out.println("id:" + id + "<br/>");
//disabled='true'文字会变成灰色,不可编辑。
//readOnly='true'文字不会变色,也是不可编辑的
//out.println("<input type='hidden' name='id' value='"
//+ id + "'/>");
out.println("姓名:<input name='name' value='"
+ name + "'/><br/>");
out.println("薪水:<input name='salary' value='"
+ salary + "'/><br/>");
out.println("年龄:<input name='age' value='"
+ age + "'/><br/>");
out.println("<input type='submit' value='提交'/>");
out.println("</form>");
}
}catch(Exception e){
e.printStackTrace();
out.println("系统繁忙,稍后重试");
}finally{
if(rst != null){
try {
rst.close();
} catch (SQLException e) {
}
}
if( prep != null){
try {
prep.close();
} catch (SQLException e) {
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
}
}
}
}
}
3、java代码-得到编辑提交的数据,更新到数据库:UpdateEmpServlet.java
package t10_修改员工信息_重定向到员工列表;
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;
/**
* 得到编辑提交的数据,更新到数据库
*/
public class UpdateEmpServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
double salary = Double.parseDouble(request.getParameter("salary"));
int age = Integer.parseInt(request.getParameter("age"));
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 将员工信息插入数据库
Connection conn = null;
PreparedStatement prep = null;
try {
//Class.forName("com.mysql.jdbc.Driver"); //提示被弃用
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jsd1108db", "root", "你的mysql密码");
prep = conn.prepareStatement("update t_emp " +
"set name=?,salary=?,age=? where id=?");
prep.setString(1, name);
prep.setDouble(2, salary);
prep.setInt(3, age);
prep.setInt(4, id);
prep.executeUpdate();
response.sendRedirect("show");
} 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.xml
<?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>web06</display-name>
<!-- t10_修改员工信息_重定向到员工列表 -->
<!-- 查询员工信息 -->
<servlet>
<servlet-name>showFormEmp</servlet-name>
<servlet-class>t10_修改员工信息_重定向到员工列表.ListEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>showFormEmp</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
<!-- 编辑员工信息 -->
<servlet>
<servlet-name>loadEmp</servlet-name>
<servlet-class>t10_修改员工信息_重定向到员工列表.LoadEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loadEmp</servlet-name>
<url-pattern>/load</url-pattern>
</servlet-mapping>
<!-- 更新员工信息 -->
<servlet>
<servlet-name>updateEmp</servlet-name>
<servlet-class>t10_修改员工信息_重定向到员工列表.UpdateEmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>updateEmp</servlet-name>
<url-pattern>/update</url-pattern>
</servlet-mapping>
</web-app>