-
目录
目录
在src文件夹下创建文件夹resource,创建配置文件jdbc.properties
-
运行结果
-
-
数据库数创建据表
-
创建工具类DButlil,方便连接数据库
-
在src文件夹下创建文件夹resource,创建配置文件jdbc.properties
driver=com.mysql.cj.jdbc.Driver ulr=jdbc:mysql://localhost:3306/chen user=root password=123456
-
在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); } } } }
-
-
创建Servlet
-
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"); } } }
-
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"); } } }
-
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>"); } }
-
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>"); } }
-
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"); } } }
-
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>"); } }
-
-
配置文件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>
-
创建前端页面
-
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>
-
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>
-
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>
-
- 源码:
oa https://www.aliyundrive.com/s/qAEsMPtYvAd 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
部门信息管理(Servlet+MySQL)
最新推荐文章于 2023-07-02 17:05:52 发布