stuid学生信息

文章目录

  • 前端准备
  • MySQL数据库
  • 封装JDBC 连接工具类 DBUtil
  • 查寻学生
  • 新增学生

前端准备

结构
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <a href="./list.html">系统启动</a>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 内嵌式 引入  CSS -->
    <style>
        h1{
            text-align: center;
        }
        /* table  是具有块级属性,所以居住 margin */
        table{
            margin: 0 auto;
        }
        td{
            text-align: center;
            /* 居住  td  中的 文字 */
        }




    </style>
</head>
<body>
    <h1>学生信息</h1>
    <table border="1px" width="500px">
        <tr>
            <td width="120px">姓名</td>
            <td width="120px">学号</td>
            <td width="180px">专业</td>
            <td width="200px">操作</td>
        </tr>
        <tr>
            <td>小明</td>
            <td>1001</td>
            <td>计算机应用技术</td>
            <td width="200px">
                <a href="./add.html">新增</a>
                <a href="./modify.html">详情</a>
                <a href="javascript:void(0)" onclick="window.confirm('确认删除吗?')" >删除</a>
            </td>
        </tr>




    </table>
    

</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>更新学生信息</h1>
    <form action="">
        <!-- 原来的信息是来自于数据库的 -->
        姓名(原来): <input type="text">
        <br>
        学号(原来):        <input type="text"> 
        <br>
        专业(原来):        <input type="text">
        <br>
        <!-- 改完后的信息,需要交到  服务器  name -->
        姓名:
        <input type="text" name="username">
        <br>
        学号:
        <input type="text" name="stuid" >
        <br>
        专业:
        <input type="text" name="zhuanye">
        <br><br>
        <input type="submit" value="确认修改" >


    </form>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>添加学生信息</h1>
    <form action="">
       
        <!-- 改完后的信息,需要交到  服务器  name -->
        姓名:
        <input type="text" name="username">
        <br>
        学号:
        <input type="text" name="stuid" >
        <br>
        专业:
        <input type="text" name="zhuanye">
        <br><br>
        <input type="submit" value="确认新增" >


    </form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MySQL数据库

在这里插入图片描述
在这里插入图片描述

封装JDBC 连接工具类 DBUtil

在这里插入图片描述

package resources;

import java.sql.*;
import java.util.ResourceBundle;

//
public class DBUtil {
    private static ResourceBundle bundle =  ResourceBundle.getBundle("resources\\db");
    private static String driver = bundle.getString("driver");
    private static String url = bundle.getString("url");
    private static String user = bundle.getString("user");
    private static String password = bundle.getString("password");
//   驱动注册
    static{
        try {
            Class.forName(driver);
//            本质上:  在 进行类加载的时候,给我把  com.mysql.cj.jdbc.Driver
//            com.mysql.cj.jdbc.  下面的   Driver这类  com.mysql.cj.jdbc.Driver . class  加载到
//            方法区内存中(元空间)
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
//   方法的设计者角度 设计连接对象的静态方法
    public static Connection getConnection() throws SQLException {
        Connection connection = DriverManager.getConnection(url, user, password);
//        此处的异常不处理,抛出去,谁调用我,谁来处理异常
        return connection;
    }
//    设计关闭流的静态方法   方法设计者
    public static void close(ResultSet rs, Statement st,Connection con){
//                                      Statement 是       PreparedStatement ps 的父接口
//        调用者  用   Statement  PreparedStatement  都支持
//        若第二个参数为 PreparedStatement ps 那么调用者 用 Statement  时会报错,或者要强制类型转换
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (st != null) {
            try {
                st.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (con != null) {
            try {
                con.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }



}

查寻学生

package com.yanyu;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import resources.DBUtil;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

@WebServlet("/list")
public class List extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
//        响应的类型
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;//查询结果集对象
        try {
            con = DBUtil.getConnection();
            con.setAutoCommit(false);
            String sql = "select * from student";
            st = con.createStatement();
            rs = st.executeQuery(sql);
            out.print("            <!DOCTYPE html>");
            out.print("<html lang='en'>");
            out.print("<head>");
            out.print("    <meta charset='UTF-8'>");
            out.print("    <meta name='viewport' content='width=device-width, initial-scale=1.0'>");
            out.print("    <title>Document</title>");
            out.print("    <!-- 内嵌式 引入  CSS -->");
            out.print("    <style>");
            out.print("                    h1{");
            out.print("                text-align: center;");
            out.print("            }");
            out.print("            /* table  是具有块级属性,所以居住 margin */");
            out.print("            table{");
            out.print("                margin: 0 auto;");
            out.print("            }");
            out.print("            td{");
            out.print("                text-align: center;");
            out.print("                /* 居住  td  中的 文字 */");
            out.print("            }");

            out.print("    </style>");
            out.print("</head>");
            out.print("<body>");
            out.print("    <h1>学生信息</h1>");
            out.print("    <table border='1px' width='500px'>");
            out.print("        <tr>");

            out.print("            <td width='120px'>学号</td>");
            out.print("            <td width='180px'>专业</td>");
            out.print("            <td width='200px'>操作</td>");
            out.print("        </tr>");
            while (rs.next()){
                String name = rs.getString("name");
                String stuid = rs.getString("stuid");
                String zhuanye = rs.getString("zhuanye");



                out.print("        <tr>");
                out.print("            <td>"+name+"</td>");
                out.print("            <td>"+stuid+"</td>");
                out.print("            <td>"+zhuanye+"</td>");
                out.print("            <td width='200px'>");
                out.print("                <a href='./add.html'>新增</a>");
                out.print("                <a href='./modify.html'>详情</a>");
                out.print("                <a href='javascript:void(0)' οnclick='window.confirm('确认删除吗?')' >删除</a>");
                out.print("            </td>");
                out.print("        </tr>");
            }













out.print("    </table>");

out.print("</body>");
out.print("</html>");
out.print("            ");








            con.commit();
        } catch (SQLException throwables) {
//            回滚事务
            if (con != null) {
                try {
                    con.rollback();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            throwables.printStackTrace();
        }


    }
}

新增学生

前端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>添加学生信息</h1>
    <form action="/stuid/add" >
       
        <!-- 改完后的信息,需要交到  服务器  name -->
        姓名:
        <input type="text" name="username">
        <br>
        学号:
        <input type="text" name="stuid" >
        <br>
        专业:
        <input type="text" name="zhuanye">
        <br><br>
        <input type="submit" value="确认新增" >


    </form>
</body>
</html>

后端

package com.yanyu;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import resources.DBUtil;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

@WebServlet("/add")
public class Add extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
//        获取  前段提交的数据
        String username = request.getParameter("username");
        String stuid = request.getParameter("stuid");
        String zhuanye = request.getParameter("zhuanye");
//  连接数据库  ,执行插入操作   Pre
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            con = DBUtil.getConnection();
            con.setAutoCommit(false);
            String sql = "insert into student(name,stuid,zhuanye)" +
                    " values(?,?,?)";
            ps = con.prepareStatement(sql);
            ps.setString(1,username);
            ps.setString(2,stuid);
            ps.setString(3,zhuanye);
            ps.execute();








            con.commit();
        } catch (SQLException e) {
            if (con != null) {
                try {
                    con.rollback();
                } catch (SQLException ex) {
                    throw new RuntimeException(ex);
                }
            }
            throw new RuntimeException(e);
        }finally {
            DBUtil.close(rs,ps,con);
        }
        response.sendRedirect("/stuid/list");
/*   response.sendRedirect     对象 是  response  ,响应对象
响应:  服务器  ---》 浏览器    浏览器:浏览器  ---》 服务器
数据流:数据的流动方向
response.sendRedirect     对象 是  response  ,响应对象
数据流:  就是 从  64行 代码开始,往浏览器  流动   ,浏览器接受发现是
一个重定向操作,浏览器会自动在地址栏发送(  相当于   浏览器自动帮人类点击了一下
   发送查询那个操作(目前项目里就是 电脑自动点击该链接    <a href="/stuid/list" >查询系统启动</a>   )
)
完整过程: 新增  ---》  表单  ---》填入数据   ——————请求1--》  发送到了
服务器----执行插入操作,数据插入到数据库---》  重定向   (对请求1  的 响应 1)
----响应:响应到浏览器--》   浏览器得到了重定向这样的操作  ---自动发送请求2(
请求2 就是  : <a href="/stuid/list" >查询系统启动</a>
response.sendRedirect("/stuid/list");  该路径是指向查询的(注意:重定向必须有项目名)


)  ---对请求2  响应 ---》  就是  查询效果
http://localhost:8888/stuid/list
*
*
* */






    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911724.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ssm071北京集联软件科技有限公司信息管理系统+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;北京集联软件科技有限公司信息管理系统 \ 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本信息…

D62【python 接口自动化学习】- python基础之数据库

day62 SQL 基础 学习日期&#xff1a;20241108 学习目标&#xff1a;MySQL数据库-- 131 SQL基础和DDL 学习笔记&#xff1a; SQL的概述 SQL语言的分类 SQL的语法特征 DDL - 库管理 DDL - 表管理 总结 SQL是结构化查询语言&#xff0c;用于操作数据库&#xff0c;通用于绝大…

LongVU :Meta AI 的解锁长视频理解模型,利用自适应时空压缩技术彻底改变视频理解方式

Meta AI在视频理解方面取得了令人瞩目的里程碑式成就&#xff0c;推出了LongVU&#xff0c;这是一种开创性的模型&#xff0c;能够理解以前对人工智能系统来说具有挑战性的长视频。 研究论文 "LongVU&#xff1a;用于长视频语言理解的时空自适应压缩 "提出了一种革命…

golang分布式缓存项目 Day 1

注&#xff1a;该项目原作者&#xff1a;https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 LRU缓存淘汰策略 三种缓存淘汰策略 FIFO&#xff08;First In, First Out&#xff09;先进先出 原理&…

Axure设计之左右滚动组件教程(动态面板)

很多项目产品设计经常会遇到左右滚动的导航、图片展示、内容区域等&#xff0c;接下来我们用Axure来实现一下左右滚动的菜单导航。通过案例我们可以举一反三进行其他方式的滚动组件设计&#xff0c;如常见的上下滚动、翻页滚动等等。 一、效果展示&#xff1a; 1、点击“向左箭…

Rust项目结构

文章目录 一、module模块1.二进制文件的cargo项目2.库的cargo项目模块中使用crate关键字模块中使用super模块中结构体的访问规则模块中枚举的访问规则模块中use关键字不同模块定义了相同类型冲突解决办法使用pub use导出本模块的函数给外面模块引入外部依赖模块与子模块 小结3.…

分享:文本转换工具:PDF转图片,WORD转PDF,WORD转图片

前言 鉴于网上大多数在线转换工具要么需要收费&#xff0c;要么免费后但转换质量极差的情况&#xff0c;本人开发并提供了PDF转图片&#xff0c;WORD转PDF&#xff0c;WORD转图片等的文本转换工具。 地址 http://8.134.236.93/entry/login 账号 账号&#xff1a;STAR001&a…

【Linux探索学习】第十一弹——初识操作系统:冯诺依曼体系结构与操作系统的概念与定位

前言&#xff1a; 在学完我们前面的指令和工具之后&#xff0c;今天我们正式开启一个新的内容的学习——进程&#xff0c;在正式讲解进程之前&#xff0c;我们要先进入一些铺垫内容的学习&#xff0c;这就是我们今天要讲的冯诺依曼体系结构和操作系统的概念&#xff0c;下面我们…

Java:二维数组

目录 1. 二维数组的基础格式 1.1 二维数组变量的创建 —— 3种形式 1.2 二维数组的初始化 \1 动态初始化 \2 静态初始化 2. 二维数组的大小 和 内存分配 3. 二维数组的不规则初始化 4. 遍历二维数组 4.1 for循环 ​编辑 4.2 for-each循环 5. 二维数组 与 方法 5.1…

TVM计算图分割--分割方式

文章目录 TVM中的计算图分割方式1. Partition Pass2. dataflow_pattern3. 内置图分割接口4. Pipeline Executor5. BYOC框架6. UMA深度学习模型通常是用计算图来表示的。计算图是一种有向无环图,其中节点代表算子,表示一个操作,节点之间的边表示算子之间的数据依赖。计算图分…

RNA-seq 差异分析的点点滴滴(1)

引言 本系列[1])将开展全新的转录组分析专栏&#xff0c;主要针对使用DESeq2时可能出现的问题和方法进行展开。 为何使用未经标准化的计数数据&#xff1f; DESeq2 工具包在接收输入时&#xff0c;期望得到的是未经处理的原始计数数据&#xff0c;比如从 RNA-seq 或其他高通量测…

基于单片机的观赏类水草养殖智能控制系统的设计(论文+源码)

1总体设计 通过需求分析&#xff0c;本设计观赏类水草养殖智能控制系统的总体架构如图2.1所示&#xff0c;为系统总体设计框图。系统采用STM32单片机作为系统主控核心&#xff0c;利用DS18B20温度传感器、TDS传感器、CO2传感器、光敏传感器实现水草养殖环境中水温、CO2浓度、T…

中兴光猫修改SN,MAC,修改地区,异地注册,改桥接,路由拨号

前言 请先阅读上一篇博客获取到光猫超级密码电信光猫获取超级密码 电信光猫天翼网关4.0获取超级密码教程 四川电信光猫 中兴 F1855V2 ZXHN F1855V2 telent权限 实战 实测_天翼4.0光猫超级密码-CSDN博客 修改SN-修改地区&#xff0c;光猫异地注册&#xff0c;设置桥接模式&#…

基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 基于卷积神经网络的农作物病虫害检测&#xff08;pytorch框架&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的农作物病虫害识别系统是在pytorch框架下实现的…

aardio 5分钟多线程开发简单入门

废话不多说 直接开干&#xff01; 借用作者话说 虽然 aardio 的多线程开发非常简单&#xff0c;但是&#xff1a; 1、请先了解:「多线程」开发比「单线程」开发更复杂这个残酷的现实。 2、请先了解: aardio 这样的动态语言可以实现真多线程非常罕见。 建议先找任意的编程语言试…

PMP–知识卡片--人才九宫格

在人才盘点时&#xff0c;根据人才的绩效和潜能&#xff0c;分别作为横坐标和纵坐标&#xff0c;将人才盘点的结果划分为9个象限&#xff0c;人才分为九个类别&#xff0c;以便于分类管理&#xff0c;因材施教。

1.每日SQL----2024/11/7

题目&#xff1a; 计算用户次日留存率,即用户第二天继续登录的概率 表&#xff1a; iddevice_iddate121382024-05-03232142024-05-09332142024-06-15465432024-08-13523152024-08-13623152024-08-14723152024-08-15832142024-05-09932142024-08-151065432024-08-131123152024-…

解决yum命令报错“Could not resolve host: mirrorlist.centos.org

这个主要是yum源出了问题或者服务器网络有问题&#xff0c;检查网络排除网络问题后&#xff0c;可更换源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.k wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository…

qt QColorDialog详解

1、概述 QColorDialog是Qt框架中的一个对话框类&#xff0c;专门用于让用户选择颜色。它提供了一个标准的颜色选择界面&#xff0c;其中包括基本的颜色选择器&#xff08;如调色板和颜色轮&#xff09;、自定义颜色输入区域以及预定义颜色列表。QColorDialog支持RGB、HSV和十六…

得物多模态大模型在重复商品识别上的应用和架构演进

重复商品治理介绍 根据得物的平台特性&#xff0c;同一个商品在平台上不能出现多个链接&#xff0c;原因是平台需要保证一品一链的特点&#xff0c;以保障商品的集中竞价&#xff0c;所以说一个商品在整个得物平台上只能有一个商详链接&#xff0c;因此我们需要对一品多链的情…