部门信息管理(Servlet+MySQL)

  1. 目录
     

    目录

    目录

    运行结果

    数据库数创建据表​编辑

    创建工具类DButlil,方便连接数据库

    在src文件夹下创建文件夹resource,创建配置文件jdbc.properties

    在src下创建utils.DButil.java工具类

    创建Servlet

    DeptAddServlet

    DeptDelServlet

    DeptDetailServlet

    DeptEditServlet

    DeptEditServlet02

    DeptListServlet

    配置文件web.xml

    创建前端页面

    index.html

    error.html

    add.html


  2. 运行结果


    1.  

  3. 数据库数创建据表

     

  4. 创建工具类DButlil,方便连接数据库

    1. 在src文件夹下创建文件夹resource,创建配置文件jdbc.properties

      driver=com.mysql.cj.jdbc.Driver
      ulr=jdbc:mysql://localhost:3306/chen
      user=root
      password=123456
    2. 在src下创建utils.DButil.java工具类

      package utils;
      import java.sql.*;
      import java.util.ResourceBundle;
      
      public class DButil {
      
          private static ResourceBundle bundle = ResourceBundle.getBundle("resources.jdbc");
          private static String driver = bundle.getString("driver");
      
          private static String ulr = bundle.getString("ulr");
          private static String user = bundle.getString("user");
          private static String password = bundle.getString("password");
      
          static {
              try{
                  Class.forName(driver);
              }catch ( ClassNotFoundException e){
                  e.printStackTrace();
              }
      
          }
      
          /**
           * 获取数据库连接对象
           * @return conn 连接对象
           * @throws SQLException
           */
          public static Connection getConnection() throws SQLException{
              //获取连接
              Connection conn = DriverManager.getConnection(ulr, user, password);
              return conn;
          }
      
      
          public static void close(Connection conn,ResultSet rs,Statement ps){
              if( rs!=null){
                  try {
                      rs.close();
                  } catch (SQLException e) {
                      throw new RuntimeException(e);
                  }
              }
      
              if( ps!=null){
                  try {
                      ps.close();
                  } catch (SQLException e) {
                      throw new RuntimeException(e);
                  }
              }
      
              if( conn!=null){
                  try {
                      conn.close();
                  } catch (SQLException e) {
                      throw new RuntimeException(e);
                  }
              }
          }
      }
      

  5. 创建Servlet

    1. DeptAddServlet

      package com.oa.web.action;
      
      import utils.DButil;
      import jakarta.servlet.ServletException;
      import jakarta.servlet.http.HttpServlet;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      
      import java.io.IOException;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.SQLException;
      
      public class DeptAddServlet  extends HttpServlet {
          @Override
          protected void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
      
              // 解决请求体的中文乱码问题。
              request.setCharacterEncoding("UTF-8");
      
              // 获取表单中的数据
              String deptno = request.getParameter("deptno");
              String dname = request.getParameter("dname");
              String loc = request.getParameter("loc");
              // 连接数据库执行更新语句
              Connection conn = null;
              PreparedStatement ps = null;
              int count = 0;
              try {
                  conn = DButil.getConnection();
                  String sql = "insert into dept(deptno, dname, loc) values(?,?,?)";
                  ps = conn.prepareStatement(sql);
                  ps.setString(1, deptno);
                  ps.setString(2, dname);
                  ps.setString(3, loc);
                  count = ps.executeUpdate();
              } catch (SQLException e) {
                  e.printStackTrace();
              } finally {
                  DButil.close(conn, null, ps);
              }
      
              if (count == 1) {
                  // 更新成功
                  // 跳转到部门列表页面(部门列表页面是通过Java程序动态生成的,所以还需要再次执行另一个Servlet)
                  //request.getRequestDispatcher("/dept/list").forward(request, response);
      
                  response.sendRedirect(request.getContextPath() + "/dept/list");
              }else{
                  // 更新失败
                  //request.getRequestDispatcher("/error.html").forward(request, response);
                  response.sendRedirect(request.getContextPath() + "/error.html");
              }
      
          }
      }
      

    2. DeptDelServlet

      package com.oa.web.action;
      
      import utils.DButil;
      import jakarta.servlet.ServletException;
      import jakarta.servlet.http.HttpServlet;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      
      import java.io.IOException;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.SQLException;
      
      public class DeptDelServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              // 根据部门编号,删除部门。
              // 获取部门编号
              String deptno = request.getParameter("deptno");
              // 连接数据库删除数据
              Connection conn = null;
              PreparedStatement ps = null;
              int count = 0;
              try {
                  conn = DButil.getConnection();
                  // 开启事务(自动提交机制关闭)
                  conn.setAutoCommit(false);
                  String sql = "delete from dept where deptno = ?";
                  ps = conn.prepareStatement(sql);
                  ps.setString(1, deptno);
                  // 返回值是:影响了数据库表当中多少条记录。
                  count = ps.executeUpdate();
                  // 事务提交
                  conn.commit();
              } catch (SQLException e) {
                  // 遇到异常要回滚
                  if (conn != null) {
                      try {
                          conn.rollback();
                      } catch (SQLException ex) {
                          ex.printStackTrace();
                      }
                  }
                  e.printStackTrace();
              } finally {
                  DButil.close(conn,null, ps);
              }
      
              // 判断删除成功了还是失败了。
              if (count == 1) {
                  //删除成功
                  //仍然跳转到部门列表页面
                  //部门列表页面的显示需要执行另一个Servlet。怎么办?转发。
                  //request.getRequestDispatcher("/dept/list").forward(request, response);
                  response.sendRedirect(request.getContextPath() + "/dept/list");
              }else{
                  // 删除失败
                  //request.getRequestDispatcher("/error.html").forward(request, response);
                  response.sendRedirect(request.getContextPath() + "/error.html");
              }
          }
      }
      

    3. DeptDetailServlet

      package com.oa.web.action;
      
      import utils.DButil;
      import jakarta.servlet.ServletException;
      import jakarta.servlet.http.HttpServlet;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      
      import java.io.IOException;
      import java.io.PrintWriter;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      
      public class DeptDetailServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              response.setContentType("text/html;charset=UTF-8");
              PrintWriter out = response.getWriter();
      
              out.print("<!DOCTYPE html>");
              out.print("<html>");
              out.print("	<head>");
              out.print("		<meta charset='utf-8'>");
              out.print("		<title>部门详情</title>");
              out.print("	</head>");
              out.print("	<body>");
              out.print("		<h1>部门详情</h1>");
              out.print("		<hr >");
      
              // 获取部门编号
      
              String deptno = request.getParameter("deptno");
      
              // 连接数据库,根据部门编号查询部门信息。
              Connection conn = null;
              PreparedStatement ps = null;
              ResultSet rs = null;
              try {
                  conn = DButil.getConnection();
                  String sql = "select dname,loc from dept where deptno = ?";
                  ps = conn.prepareStatement(sql);
                  ps.setString(1, deptno);
                  rs = ps.executeQuery();
                  // 这个结果集一定只有一条记录。
                  if(rs.next()){
                      String dname = rs.getString("dname");
                      String loc = rs.getString("loc");
      
                      out.print("部门编号:"+deptno+" <br>");
                      out.print("部门名称:"+dname+"<br>");
                      out.print("部门位置:"+loc+"<br>");
                  }
              } catch (SQLException e) {
                  e.printStackTrace();
              } finally {
                  DButil.close(conn, rs, ps);
              }
      
              out.print("		<input type='button' value='后退' onclick='window.history.back()'/>");
              out.print("	</body>");
              out.print("</html>");
          }
      }
      

    4. DeptEditServlet

      package com.oa.web.action;
      
      import utils.DButil;
      import jakarta.servlet.ServletException;
      import jakarta.servlet.http.HttpServlet;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      
      import java.io.IOException;
      import java.io.PrintWriter;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      
      public class DeptEditServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              PrintWriter out = response.getWriter();
              String deptno = request.getParameter("deptno");
      
              out.println("<!DOCTYPE html>");
              out.println("<html lang=\"en\">");
              out.println("<head>");
              out.println("<meta charset=\"UTF-8\">");
              out.println("<title>修改部门</title>");
              out.println("</head>");
              out.println("<body>");
              out.println("<h1>修改部门</h1>");
              out.println("<hr>");
              out.println("<form action=\"/oa/dept/edit02\" method=\"post\">");
      
              Connection conn = null;
              PreparedStatement ps = null;
              ResultSet rs = null;
              try {
                  conn = DButil.getConnection();
                  String sql = "select dname,loc from dept where deptno = ?";
                  ps = conn.prepareStatement(sql);
                  ps.setString(1,deptno);
                  rs = ps.executeQuery();
      
                  if(rs.next()){
                      String dname = rs.getString("dname");
                      String loc = rs.getString("loc");
      
                      out.println("部门编号<input type=\"text\" name=\"deptno\" value=\""+deptno+"\" readonly><br>");
                      out.println("部门名称<input type=\"text\" name=\"dname\" value=\""+dname+"\"><br>");
                      out.println("部门位置<input type=\"text\" name=\"loc\" value=\""+loc+"\"><br>");
                  }
      
              }catch (SQLException e){
                  e.printStackTrace();
              }
      
      
              out.println("<input type='submit' value='修改'>");
              out.println("</form>");
              out.println("</body>");
              out.println("</html>");
          }
      }
      

    5. DeptEditServlet02

      package com.oa.web.action;
      
      import utils.DButil;
      import jakarta.servlet.ServletException;
      import jakarta.servlet.http.HttpServlet;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      
      import java.io.IOException;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.SQLException;
      
      public class DeptEditServlet02 extends HttpServlet {
          @Override
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              String deptno = request.getParameter("deptno");
              String dname = request.getParameter("dname");
              String loc = request.getParameter("loc");
      
              Connection conn = null;
              PreparedStatement ps = null;
              int n = 0;
              try {
                  conn = DButil.getConnection();
                  String sql = "update dept set dname = ?, loc = ? where deptno = ?";
                  ps = conn.prepareStatement(sql);
                  ps.setString(1,dname);
                  ps.setString(2,loc);
                  ps.setString(3,deptno);
                  n = ps.executeUpdate();
      
      
              }catch (SQLException e){
                  e.printStackTrace();
              }
              if (n == 1) {
                  // 更新成功
                  // 跳转到部门列表页面(部门列表页面是通过Java程序动态生成的,所以还需要再次执行另一个Servlet)
                  //request.getRequestDispatcher("/dept/list").forward(request, response);
      
                  response.sendRedirect(request.getContextPath() + "/dept/list");
              }else{
                  // 更新失败
                  //request.getRequestDispatcher("/error.html").forward(request, response);
                  response.sendRedirect(request.getContextPath() + "/error.html");
              }
          }
      }
      

    6. DeptListServlet

      package com.oa.web.action;
      
      import utils.DButil;
      import jakarta.servlet.ServletException;
      import jakarta.servlet.http.HttpServlet;
      import jakarta.servlet.http.HttpServletRequest;
      import jakarta.servlet.http.HttpServletResponse;
      
      import java.io.IOException;
      import java.io.PrintWriter;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      
      public class DeptListServlet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              //动态的获取应用的根路径
              String contextPath = request.getContextPath();
      
              //设置相应的内容类型以及字符集。防止中文乱码
              response.setContentType("text/html;charset=utf-8");
              PrintWriter out = response.getWriter();
      
              out.print("<!DOCTYPE html>");
              out.print("<html lang='en'>");
              out.print("<head>");
      
              out.print("<script type='text/javascript'>");
              out.print("    function del(dno){");
              out.print("        if(window.confirm('删了不可恢复')){");
              out.print("            document.location.href = '"+contextPath+"/dept/delete?deptno=' + dno");
              out.print("        }");
              out.print("    }");
              out.print("</script>");
      
              out.print("<meta charset='UTF-8'>");
              out.print("<title>部门列表</title>");
              out.print("</head>");
              out.print("<body>");
              out.print("<h1 align='center'>部门列表</h1>");
              out.print("<hr>");
              out.print("<table border='1px' align='center' width='50%'>");
              out.print("<tr>");
              out.print("<th>序号</th>");
              out.print("<th>部门编号</th>");
              out.print("<th>部门名称</th>");
              out.print("<th>操作</th>");
              out.print("</tr>");
      
              //连接数据库,查询所有部门
              Connection conn = null;
              PreparedStatement ps = null;
              ResultSet rs = null;
              try{
                  conn = DButil.getConnection();
                  String sql = "select deptno,dname,loc from dept";
                  ps = conn.prepareStatement(sql);
                  rs = ps.executeQuery();
                  //处理结果集
                  int i = 0;
                  while (rs.next()){
                      String deptno = rs.getString("deptno");
                      String dname = rs.getString("dname");
                      String loc = rs.getString("loc");
      
      
                      out.print("<tr>");
                      out.print("<td>"+(++i)+"</td>");
                      out.print("<td>"+(deptno)+"</td>");
                      out.print("<td>"+(dname)+"</td>");
                      out.print("<td>");
                      out.print("<a href='"+contextPath+"/add.html'>添加 </a>");
                      out.print("<a href='javascript:void(0)' onclick = 'del("+deptno+")'>删除 </a>");
                      out.print("<a href='"+contextPath+"/dept/edit?deptno="+deptno+"'>修改 </a>");
                      out.print("<a href='"+contextPath+"/dept/detail?deptno="+deptno+"'>详情</a>");
                  }
              }catch (SQLException e){
                  e.printStackTrace();
              } finally {
                  DButil.close(conn,rs,ps);
              }
              out.print("</td>");
              out.print("</tr>");
              out.print("</table>");
              out.print("</body>");
              out.print("</html>");
          }
      }
      

  6. 配置文件web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
             version="5.0">
        <servlet>
            <servlet-name>list</servlet-name>
            <servlet-class>com.oa.web.action.DeptListServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>list</servlet-name>
            <url-pattern>/dept/list</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>detail</servlet-name>
            <servlet-class>com.oa.web.action.DeptDetailServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>detail</servlet-name>
            <url-pattern>/dept/detail</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>delete</servlet-name>
            <servlet-class>com.oa.web.action.DeptDelServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>delete</servlet-name>
            <url-pattern>/dept/delete</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>add</servlet-name>
            <servlet-class>com.oa.web.action.DeptAddServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>add</servlet-name>
            <url-pattern>/dept/add</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>edit</servlet-name>
            <servlet-class>com.oa.web.action.DeptEditServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>edit</servlet-name>
            <url-pattern>/dept/edit</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>edit02</servlet-name>
            <servlet-class>com.oa.web.action.DeptEditServlet02</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>edit02</servlet-name>
            <url-pattern>/dept/edit02</url-pattern>
        </servlet-mapping>
    </web-app>

  7. 创建前端页面

    1. index.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>欢迎</title>
      </head>
      <body>
      <h1 align="center">欢迎使用部门管理系统</h1>
      <a href="/oa/dept/list">查看部门信息</a>
      </body>
      </html>

    2. error.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>error</title>
      </head>
      <body>
      <h1>操作失败,<a href="javascript:void(0)" onclick="window.history.back()">返回</a></h1>
      </body>
      </html>

    3. add.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>添加</title>
      </head>
      <body>
      <h1>新增部门</h1>
      <hr>
      <form action="/oa/dept/add" method="post">
          部门编号<input type="text" name="deptno"><br>
          部门名称<input type="text" name="dname"><br>
          部门位置<input type="text" name="loc"><br>
          <input type="submit" value="保存">
      </form>
      </body>
      </html>

  8. 源码:
    oa https://www.aliyundrive.com/s/qAEsMPtYvAd 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值