day43_crud

news2025/1/8 5:44:55

在这里插入图片描述

一、CRUD

(create, read (retrieve), update, delete)

增 查 改 删

1.1 代码规范

com.qf.功能名.类名

com.qf.model.Xxx 实体类

com.qf.util.Xxx 工具类

com.qf.servlet.XxxServlet Servlet类,主要是做接收请求作出响应

com.qf.dao.XxxDao Dao类. Data Access Object,Dao类主要操作JDBC,与数据库交互

1.2需求

1 登录.(index.jsp)

​ 登录失败,继续留在当前页面,并给出错误提示

​ 登录成功,跳转主页面(admin.jsp)

2 注册.

​ 在index.jsp首页,给出注册按钮,点击后,跳转至注册页面.

​ 输入数据,点击注册,如果注册成功,跳转至首页登录.

如果不成功,跳转错误页面.

ps: 注册即向数据库插入一条数据

3 主页面

​ 主页面以表格的形式,展现所有用户信息.

在表格中多出一列【 操作】,该列的值是【更新|删除】

4 更新

​ 点击每条数据后的更新按钮,跳转更新页面。【数据回显】

5 删除

​ 点击每条数据后的删除按钮,删除该条数据

1.3 设计数据库

CREATE TABLE `admin` (
  `Adminname` varchar(20) NOT NULL,
  `PASSWORD` varchar(20) NOT NULL,
  `phone` varchar(11) NOT NULL,
  `address` varchar(20) NOT NULL,
  PRIMARY KEY (`Adminname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

image-20230529093900056

1.4 环境搭建

创建web项目,创建对应的包结构,导入依赖包

image-20230529094001594

  <dependencies>
    <!-- 引入servlet依赖 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!-- 引入jsp依赖 -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
    </dependency>
    <!-- mysql驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
    <!-- 阿里巴巴数据库连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>
    <!-- jstl -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
      <exclusions>
        <exclusion>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jstl-impl</artifactId>
      <version>1.2</version>
      <exclusions>
        <exclusion>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.servlet.jsp.jstl</groupId>
          <artifactId>jstl-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

根据数据库,创建实体类。【ORM】

image-20230529094057991

二、登录

2.1 编写login.jsp 首页

<%--
  +------------------+
      天 道 酬 勤    
  +------------------+
  Created by QiuShiju.
  Date: 2023/5/23
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h2>登录</h2>
    <form action="${pageContext.request.contextPath}/login" method="post">
        用户名<input type="text" name="Adminname"><br>
        密码 <input type="password" name="password"><br>
        <span style="color: red">${msg}</span>
        <input type="submit" value="登录"><br>
    </form>
</body>
</html>

2.2 LoginServlet

2.3 AdminService

2.4 AdminDao

三、首页 – 展现全部

需求: 登录成功后,跳转主页面时,展现数据库的全部数据

特别注意:

登录成功后需要查询全部展现,删除完后需要查询全部展现,更新完后需要查询全部展现.

​ 所以,将查询全部并展现的动作抽取成一个单独的AdminListServlet,谁要查全部,直接发发请求让其执行即可

实现:

3.1 登录成功后,再查询全部数据 调用dao查全部

image-20230529094602708

3.2 全部数据存入请求域,再跳转至页面

image-20230529094643605

3.3 再到页面上展现全部数据

image-20230529094743595

四、删除

4.1 设计删除按钮,及删除请求 拼接参数

设计成,点击删除弹出确认框.点击[确定]即发请求,删除数据. 点击[取消],则不删除.

PS: 使用jquery实现,引入jquery库

前端

image-20230529103504217

后端AdminDelServlet

image-20230529103619766

重写发请求,查询全部,跳转admin.jsp展现全部

在页面加载时,根据删除是否成功,弹框提示

image-20230529103913285

4.2 映射

4.3 接收请求

4.4 调用service-dao删除

4.5 响应

删除完后,重新再查全部

五、更新

更新的情况是

  • 在每一行数据后面,有更新按钮
  • 点击更新,跳转至更新页面
  • [重要]此时页面会有该条数据的数据回显,不是空表格
  • 重新输入一些数据
  • 点击提交按钮,执行更新
  • 重新看到最新更新后的数据(重新查全部)

5.1 设计更新按钮,及请求

5.2 Servlet接收请求,查询数据

5.3 跳转至更新页面,并展现旧值

5.4 输入新值,发请求,接收所有参数.

5.5 执行更新

5.6 跳转至首页,查看全部

六、注册

6.1 登录页添加注册按钮

image-20230529113408159

6.2 编写注册页面

ps: 添加表单校验功能,没有输入数据,不允许提交

<body>
<h1>注册新用户</h1>
<form action="${pageContext.request.contextPath}/regist" method="post">
<table>
    <tr>
        <td>
            用户名
        </td>
        <td>
            <input type="text" name="username">
        </td>
    </tr>
    <tr>
        <td>
            密码
        </td>
        <td>
            <input type="password" name="password">
        </td>
    </tr>
    <tr>
        <td>
            手机号
        </td>
        <td>
            <input type="text" name="phone">
        </td>
    </tr>
    <tr>
        <td>
            地址
        </td>
        <td>
            <input type="text" name="address">
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <input type="submit" value="注册">
            <span>${registMsg}</span>
        </td>
    </tr>
</table>
</form>
</body>

6.3 AdminRegirstServlet

6.4 AdminService&AdminDao

6.5 响应

相减视频; https://space.bilibili.com/402601570/channel/collectiondetail?sid=1232591&ctype=0

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hive详解(二)

2 hive的两种访问方式 2.4.1 命令行的方式 在前面的操作中&#xff0c;我们都是通过cli的方式访问hive的。我们可以切身的体会到&#xff0c;通过cli的方式访问hive的不足&#xff0c;如&#xff1a;cli太过笨重&#xff0c;需要hive的jar支持。 2.4.2 HiveServer2模式 1.JD…

Flutter学习二:构建第一个Flutter App

目录 1 使用vsCode创建APP项目 1.1 创建项目 1.2 调试项目 2 使用AndroidStudio创建APP项目 2.1 创建项目 2.2 调试项目 1 使用vsCode创建APP项目 1.1 创建项目 查看>命令面板&#xff0c;输入Flutter&#xff0c;点击New Project >Application&#xff0c;按流程创…

MySQL--事务持久化原理探究

1 引言 如果让你来实现一下 MySQL 持久化的功能&#xff0c;你准备如何实现&#xff1f;如果不考虑性能&#xff0c;接口完全使用同步机制实现&#xff0c;好像也不会出现什么问题&#xff0c;可是不考虑性能是不现实的&#xff0c;IO操作多么耗时&#xff0c;每次写磁盘&…

2023第五届双态IT北京用户大会 | 一起见证云原生时代的数据魅力

2023年6月9日-11日&#xff0c;由ITSS分会指导&#xff0c;ITSS数据中心运营管理组、双态IT论坛联合主办&#xff0c;ITSS媒体组协办的“2023第五届双态IT北京用户大会”将于北京召开。 为了能够有更多专注细分领域、内容深入的分享和探讨&#xff0c;每一届都会和论坛成员一起…

ReID专栏(二)多尺度设计与应用

前言 多尺度流层可以更有效地提取多尺度信息&#xff0c;而基于显著性的学习融合层有利于重要特征通道的自动选择&#xff0c;因此MuDeep在学习鉴别模式方面很强大。其实这也是目前大多数深度学习任务发表论文的趋势&#xff0c;即多尺度、显著性特征的表示。 本教程禁止转载。…

OpenMMLab AI实战营第二期(2)MMPose初体验

根据MMPose的官方文档学习一下 MMPose文档地址&#xff1a;https://mmpose.readthedocs.io/zh_CN/latest/index.html 文章目录 1. 概述2. 安装2.1 创建conda环境并激活2.2 安装pytorch2.3 使用 MIM 安装 MMEngine 和 MMCV2.4 安装MMPose 3. 20 分钟了解 MMPose 架构设计3.1 总…

Typora导出pdf一直停留在导出界面

Typora导出pdf一直停留在导出界面 1. 因为修改临时文件夹地址导致的问题 尝试遍了网上的各种方法对我都没奏效。 但是用管理员权限在 C:\Program Files\Typora 下打开 typora.exe 发现可以正常导出 pdf。 结合这一点&#xff0c;加上最近频繁出现启动文件、文件夹没有权限的…

ES查询 too_many_clauses,maxClauseCount is set to 5000

一&#xff1a;语法执行背景 ES boo查询中过多的拼接bool导致报maxClauseCount is set to 5000 { "caused_by": { "type": "too_many_clauses","reason": "maxClauseCount is set to 5000" } } 查询DSL语句&#xff1a; { …

问题解决:微信开发者工具显示清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]

问题&#xff1a; 在编译之前&#xff0c;会进行清除全部缓存操作&#xff0c;但是点击后出现清除清除登录状态失败。 清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]原因&#xff1a; 未连接网络&#xff0c;或者被你连接的网络拦截。 解决&#xf…

基于 PaddleVideo 的花滑骨骼点动作识别 2s-AGCN

配置文件节点流配置文件 2s-agcn_ntucs_joint_fsd.yamlMODEL 字段DATASET 字段PIPELINE 和 INFERENCE 字段OPTIMIZER 字段 agcn2s.pygraph输入通道数 骨骼流 Dataset 和 Pipeline配置文件DATASETPIPELINE 源码skeleton.pyskeleton_pipeline.pyAutoPaddingSkeletonNormIdenSkete…

springboot+vue高校学科建设资源管理系统

本 1、数据库的构建&#xff1a;数据库需求分析根据所需要实现的功能&#xff0c;对其数据库的需求进行分析。 2、后台管理&#xff1a;网站后台是给管理员用作管理网站内容的操作界面&#xff0c;它是网站日常维护&#xff0c;网站内容操作的交互窗口&#xff0c;是完成网站后…

JS逆向系列之猿人学爬虫第9题-动态cookie2

文章目录 目标参数流程分析js代码Python调用测试目标 https://match.yuanrenxue.cn/match/9参数流程分析 二次请求cookie携带m 第一次请求响应内容格式化之后是这样的: < body > < script src = "/static/match/safety/match9/udc.js" > <

Axure教程—表格(中继器)

本文将教大家如何用AXURE中的中继器制作表格 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://oc3e6a.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87854863?spm1001.2014.3001.5501 二、功能介绍 可以在表格中插入…

1729_c语言中全局变量与局部变量以及形参重名问题

全部学习汇总&#xff1a; GreyZhang/c_basic: little bits of c. (github.com) 欢迎路过的YUAN类朋友相互交流&#xff0c;以下是我的联系方式&#xff1a; Email&#xff1a;greyzhang126.com 微信&#xff1a;grey0612 C语言中烦人变量命名冲突时会有怎么样的处理机制&…

sql_server数据库入门学习(一)

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集&#xff01; &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指…

react-native-vector-icons 安卓和ios 安装

npm install --save react-native-vector-icons ios 将node_modules/react-native-vector-icons/Fonts的文件夹里的内容复制到项目的ios/Fonts文件夹下 选择Ios/Fonts/里的内容 点开Ifon.plist文件&#xff0c;并在右侧添加一项"Fonts provided by application" 在…

(学习日记)2023.04.25

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

[SpringBoot]Knife4j框架Knife4j的显示内容的配置

目录 Knife4j框架 使用 添加依赖&#xff1a;knife4j-spring-boot-starter&#xff0c;版本2.0.9 添加配置&#xff1a;在配置文件中添加knife4j.enable属性的配置&#xff0c;取值为true 添加配置类&#xff1a;类的代码相对固定 访问 Knife4j的显示内容的配置 Knife4j…

赶紧收藏!2023年成人高考【复习大纲】

▶高起点考试题型 高起点-语文 试卷满分为150分。考试用时120分钟。 >>>考试内容&#xff1a; 语言知识及运用、现代文阅读、古代诗文阅读和鉴赏、写作四个方面&#xff0c;考试以测试阅读和写作能力为重点。 >>>备考分析&#xff1a; 语文学习要注意平…

【Python】实现一个类似于Thief的摸鱼软件

一 背景说明 之前用Thief摸鱼(Thief官网&#xff09;&#xff0c;觉得挺好用。对于其最基本的TXT摸鱼&#xff0c;准备在Python中扩展一下功能&#xff0c;使其能够通过爬虫&#xff0c;支持爬取热门小说网站的内容。 软件已经开源到&#xff1a;MoFish软件开源地址 功能是&…