From 4f73c8ca24981bcf20e8fcb850f188314339cfa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A2=E4=BA=A8=E8=80=80?= <2640788668@qq.com> Date: Thu, 25 May 2023 13:45:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tomcat \344\275\234\344\270\232.md" | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 "21 \345\215\242\344\272\250\350\200\200/tomcat \344\275\234\344\270\232.md" diff --git "a/21 \345\215\242\344\272\250\350\200\200/tomcat \344\275\234\344\270\232.md" "b/21 \345\215\242\344\272\250\350\200\200/tomcat \344\275\234\344\270\232.md" new file mode 100644 index 0000000..a5c80c6 --- /dev/null +++ "b/21 \345\215\242\344\272\250\350\200\200/tomcat \344\275\234\344\270\232.md" @@ -0,0 +1,215 @@ +```markdown +# 作业, + * 1 数据库相关的操作,使用封装的工具类 + * 2 编写四个servlet,使用注解指定相关的访问路径,分别对应查询,修改,删除,添加的操作 + * 3 从浏览器中,访问这中个路径,显示响应的信息,查询显示结果,其它的显示成功或是失败 + * 4 预习题:如何通过浏览器传送请求参数给servlet,servlet如何接收这些参数,并使用这些参数,去影响数据库的操作? + +``` + +//工具类 + +```java +package ToolJDBC; + +import java.sql.*; + +public class DBUtil { // Math System + // 数据库的主机名,端口号,数据库名,关闭SSL,采用Unicode字符集,并以Utf8为编码 + private static final String url = "jdbc:mysql:///student_db?useSSL=false&useUnicode=true&characterEncoding=utf8";// localhost:3306是默认的主机和端口号,可以省略掉 + private static final String user = "root"; // 用户名 + private static final String password = "root";// 密码 + + // 注册驱动 + static { + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException e) { + System.out.println("驱动注册异常"); + e.printStackTrace();// 开发调试阶段,为了排查具体错误,要把详细的异常信息打印 + } + } + + // 获取连接对象 + public static Connection getConn() { + Connection conn = null;// alt+回车 + try { + conn = DriverManager.getConnection(url, user, password); + } catch (SQLException e) { + System.out.println("获取连接对象失败"); + e.printStackTrace(); + } + return conn; + } + + // 一个通用查询方法,接收SQL语句,返回结果集 + public static ResultSet query(String sql, String... keys) { + // String sql = "update student set id=? , name =? , sex =? where id=?"; + // 形参前加... 就表示其是可变参数,就是数组 + // 获取连接对象 + ResultSet rs = null; + try { + Connection conn = getConn(); + // 建立预编译SQL的对象 + PreparedStatement pst = conn.prepareStatement(sql);// 将?号转成变量 + // 给每个变量赋值 + // 遍历可变参数 + for (int i = 0; i < keys.length; i++) { + pst.setString((i + 1), keys[i]); + } + // 执行SQL + rs = pst.executeQuery(); + } catch (SQLException e) { + System.out.println("执行查询异常"); + e.printStackTrace(); + } + return rs; + } + + // ,一个通用更新的方法(删除,添加,修改), + public static int update(String sql, String... keys) { + // String sql = "update student set id=? , name =? , sex =? where id=?"; + // 形参前加... 就表示其是可变参数,就是数组 + // 获取连接对象 + int num = 0; + try { + Connection conn = getConn(); + // 建立预编译SQL的对象 + PreparedStatement pst = conn.prepareStatement(sql);// 将?号转成变量 + // 给每个变量赋值 + // 遍历可变参数 + for (int i = 0; i < keys.length; i++) { + pst.setString((i + 1), keys[i]); + } + // 执行SQL + num = pst.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return num; + + // + // + // 一个通用的关闭资源的方法 + + } +} + +``` + +//增删改查 + +```java +//add +@WebServlet("/add") +public class Add extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/html;charset=utf-8"); + resp.setCharacterEncoding("utf-8"); + PrintWriter pw = resp.getWriter(); + pw.write(""+"学生信息表"); + String sql="insert into student values(10,'qwe','d')"; + int add = DBUtil.update(sql); + if (add !=0) { + System.out.println("添加成功"); + }else{ + System.out.println("添加失败"); + pw.write("收到一条错误的添加信息"); + } + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doPost(req, resp); + } +} + +//del +@WebServlet("/del") +public class Delete extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/html;charset=utf-8"); + resp.setCharacterEncoding("utf-8"); + + PrintWriter pw = resp.getWriter(); + pw.write("返回信息表"); + pw.write(""+"学生信息表"); + String sql ="delete from student where id=4"; + int i = DBUtil.update(sql); + if(i>0){ + System.out.println("删除成功!"); + }else{ + System.out.println("删除失败!"); + pw.write("收到一条错误信息"); + } + + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doPost(req, resp); + } +} + +//update +@WebServlet("/update") +public class Update extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/html;charset=utf-8"); + resp.setCharacterEncoding("utf-8"); + PrintWriter pw = resp.getWriter(); + pw.write("返回信息表"); + pw.write(""+"学生信息表"); + String sql="update student set name='小石,sex='男' where NO=10"; + int update = DBUtil.update(sql); + if (update !=0) { + System.out.println("修改成功"); + }else{ + System.out.println("修改失败"); + pw.write("收到一条错误信息"); + } + + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doPost(req, resp); + } +} +//select +@WebServlet("/stu") +public class Student extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/html;charset=utf-8"); + resp.setCharacterEncoding("utf-8"); + PrintWriter pw = resp.getWriter(); + pw.write(""+"学生信息表"); + String sql="select * from student"; + ResultSet rs = DBUtil.query(sql); + pw.write(""); + pw.write("
编号"+"姓名"+"性别"); + try { + while (rs.next()){ + int id=rs.getInt(1); + String name=rs.getString(2); + String sex=rs.getString(3); + pw.write("
"+id+""+name+""+sex); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + pw.write("
"); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + super.doPost(req, resp); + } +} +``` + -- Gitee From bd0244f6ebbb894c62a8d376f7afba96ee21af0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A2=E4=BA=A8=E8=80=80?= <2640788668@qq.com> Date: Fri, 26 May 2023 13:11:42 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=AC=E5=9B=9B=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...23\345\242\236\345\210\240\346\237\245.md" | 294 ++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 "21 \345\215\242\344\272\250\350\200\200/tomcat\346\225\260\346\215\256\345\272\223\345\242\236\345\210\240\346\237\245.md" diff --git "a/21 \345\215\242\344\272\250\350\200\200/tomcat\346\225\260\346\215\256\345\272\223\345\242\236\345\210\240\346\237\245.md" "b/21 \345\215\242\344\272\250\350\200\200/tomcat\346\225\260\346\215\256\345\272\223\345\242\236\345\210\240\346\237\245.md" new file mode 100644 index 0000000..5802651 --- /dev/null +++ "b/21 \345\215\242\344\272\250\350\200\200/tomcat\346\225\260\346\215\256\345\272\223\345\242\236\345\210\240\346\237\245.md" @@ -0,0 +1,294 @@ +## 作业 + +### 主界面 + +~~~ java +package servlet; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.ResultSet; +import java.sql.SQLException; + +@WebServlet("/stu") +public class StudentServlet extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + doPost(req,resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + System.out.println("加载成功!"); + resp.setContentType("text/html;charset=utf-8"); + resp.setCharacterEncoding("utf-8"); + + PrintWriter out = resp.getWriter(); + + String sql ="select * from student"; + ResultSet rs = Utility.query(sql); + + //编写页面显示数据库信息 + out.write(""); + out.write(""); + try { + while(rs.next()){ + int id = rs.getInt(1); + String name = rs.getString(2); + String sex = rs.getString(3); + out.write(""); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + out.write(""); + out.write(""); + out.write("
编号姓名性别
"+id+""+name+""+sex+"
添加\n删除
"); + +// out.write("修改"); + } +} +~~~ + +### 增类 + +~~~ java +package servlet; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.sql.ResultSet; + +@WebServlet("/add") +public class Add extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + doPost(req,resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/html;charset=utf-8"); + req.setCharacterEncoding("utf-8"); + PrintWriter out = resp.getWriter(); + + String username = req.getParameter("name"); + String sex = req.getParameter("sex"); + + System.out.println(username+","+sex); + + String sql ="insert into student values(null,?,?)"; + int i = Utility.add(sql,username,sex); + if(i>0){ + out.write("添加成功!"); + }else{ + out.write("添加失败!"); + } + out.write("查询"); + } +} + +~~~ + +### 增加网页 + +~~~ html + + + + + Title + + +
+

添加学生

+ 请输入你要添加的学生姓名:
+ 请输入你要添加的学生的性别:
+ +
+ + +~~~ + +### 删类 + +~~~ java +package servlet; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +@WebServlet("/delete") +public class Delete extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + doPost(req,resp); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/html;charset=utf-8"); + req.setCharacterEncoding("utf-8"); + PrintWriter out = resp.getWriter(); + + String username = req.getParameter("name"); + + String sql ="delete from student where name like ?"; + int i = Utility.delete(sql,"%" + username + "%"); + if(i>0){ + out.write("删除成功!"); + }else{ + out.write("删除失败!"); + } + out.write("查询"); + } +} +~~~ + +### 删除网页 + +~~~ html + + + + + Title + + +

删除学生

+
+ 请输入你要删除的学生姓名:
+ +
+ + +~~~ + +### 查询网页 + +~~~ html + + + + + Title + + +

查询学生

+
+ 请输入你要查找的学生姓名:
+ +
+ + +~~~ + +### 工具类 + +~~~ java +package servlet; + +import java.sql.*; + +public class Utility { + private static final String url = "jdbc:mysql:///student_db?useSSL=false&useUnicode=true&characterEncoding=utf8"; + private static final String username = "root"; + private static final String password = "root"; + + //注册驱动包 + static { + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException e) { + System.out.println("驱动包加载失败!"); + e.printStackTrace(); + } + } + + //获取连接的对象 + public static Connection getConn() { + Connection conn = null; + try { + conn = DriverManager.getConnection(url, username, password); + } catch (SQLException e) { + System.out.println("获取连接对象失败!"); + e.printStackTrace(); + } + return conn; + } + + //查询 + public static ResultSet query(String sql, String... keys) { + //调用方法获取conn对象 + ResultSet rs = null; + try { + Connection conn = getConn(); + //获取执行SQL语句的对象 + PreparedStatement pst = conn.prepareStatement(sql); + //将值给对应的问号 + for (int i = 0; i < keys.length; i++) { + pst.setString(i + 1, keys[i]); + } + //执行SQL语句 + rs = pst.executeQuery(); + } catch (SQLException e) { + System.out.println("执行查询语句出错!"); + e.printStackTrace(); + } + return rs; + } + + //添加 + public static int add(String sql, String... keys){ + int num = getNum(sql, keys); + return num; + + } + + //删除 + public static int delete(String sql, String... keys) { + int num = getNum(sql, keys); + return num; + } + + //修改 + public static int Update(String sql, String... keys){ + int num = getNum(sql, keys); + return num; + } + + //获取执行成功了几条数据 + private static int getNum(String sql, String[] keys) { + int num = 0; + try { + Connection conn = getConn(); + //获取执行SQL语句的对象 + PreparedStatement pst = conn.prepareStatement(sql); + //将值给对应的问号 + for (int i = 0; i < keys.length; i++) { + pst.setString(i + 1, keys[i]); + } + num = pst.executeUpdate(); + } catch (SQLException e) { + System.out.println("执行语句出错!"); + } + return num; + } + +} +~~~ \ No newline at end of file -- Gitee