JavaWeb3--操纵数据库中数据(班级管理,重写service),jstl


思路:从数据库中读出list – list放进作用域 转发到页面 携带数据到页面

1. 要使用数据:导入mysql的jar包

1.1 引入mydql包

访问数据库要引mysql的jar包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 web目录配置

1. 在web目录的WEB-INF目录中建一个lib目录

不然加载了包,但是包编译不过去:找不到包
在这里插入图片描述

2. 导入使用的jar包

(Mean之后就不用这样做了)
复制jar包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 out编译/开发目录

在这里插入图片描述删掉重新生成
在这里插入图片描述

在这里插入图片描述

*报错:500

在这里插入图片描述

  • 500:java代码出错
  • connection出错:只有一种情况,数据库没有连接上
    解决:web目录少加东西了+重新生成out目录
    在这里插入图片描述
    在这里插入图片描述

2. 项目结构

新建util包、 pojo包
在这里插入图片描述

3. 封装JdbcUnit

  1. 加载驱动
  2. 创建连接
  3. close函数
  4. 查询函数:给问号赋值、获取rs(建对象、获取属性列表、循环属性赋值,将对象加入list)、关闭流

4. 调用JdbcUnit 读数据

  1. 调用查结果,放入作用域
  2. 跳转到jsp页面
  3. 读数据
  4. 用表格显示

读数据代码:
在这里插入图片描述

list.jsp:
${grads}}

在这里插入图片描述

5. 用表格显示结果 JSTL

JSTL:是标签库,提供了很多自定义标签。(不用jsp标签,用jstl)

5.1 导入jstl的jar包

(1)web目录配置

复制jar包
在这里插入图片描述
导入web中的lib目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)导包

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

(3)检查out目录在没有吗,没有–删除重新编译

5.2 用法

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

5.3 效果

(1)显示数据库中的数据

在这里插入图片描述

(2)根据实际情况显示数据 c:if

根据数据库中的值让数据对应其他显示形式,eg 1表示男 0表示女
在这里插入图片描述

在这里插入图片描述

6. JSTL笔记

jstl是一套自定义的标签 用于实现jsp中的业务逻辑

6.1使用方式

  1. 引入jstl jar包
  2. 在哪个jsp中使用就要在其中增加 头部指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

6.2常用标签

  1. 循环标签 c:forEach 类似增强for循环
<c:forEach items="要循环的集合或数组" var="循环变量"></c:forEach>
itmes必须是一个el表达式,取到的值必须是集合或数组。(jsp通过作用域得到集合,jsp本身没有集合)
var可以自己起名字
  1. 条件标签 c:if
<c:if test="条件">结果</c:if>
c:if 没有else

<td>
     <c:if test="${student.sex == 1}"></c:if>
     <c:if test="${student.sex == 0}"></c:if>
</td>

7. 修改数据

7.1 添加数据

点添加链接–》跳转到添加界面上

goAdd

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

doAdd

  • jsp:
    在点击保存的那一刻,接到输入的内容并将数据保存到数据库中
    点保存时无法在此页面操作,要交给另一个Servlet处理
    • 如何交给另一个servlet:
      1. 给表单增加action属性 :action表示 在点击提交的时候把表单信息提交给哪个servlet,也是用地址来控制
      2. 按钮的type设为submit:一点 把表单里的数据提交到action指定的servlet下
        在这里插入图片描述
  • Servlet:
    1.接收表单中所有数据 form表单中所有输入框
    2.保存到数据库中
    3.转发到列表页
  1. 接收表单中所有数据 form表单中所有输入框
    传递问题:表单数据正常接不到,
    解决:给input一个name属性,名字可以随便取;通过servlet的request.getParameter(“要接收表单的name值”)
    doAdd - Servlet中:
     String name = request.getParameter("name");//传要接的是哪个表单 传要接的表单的name值
    
get请求

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

post请求

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
发送请求后,地址不变
在这里插入图片描述

  • doAdd Servlet:
    在这里插入图片描述
  1. 保存到数据库中
    先封装JdbcUnit 的增删改函数
    doAdd 的 servlet调用
  2. 转到列表页
  • 用转发出错
    在这里插入图片描述
    点击保存 跳转到doAdd的servlet中 doAdd跳转到list页面,但是list页面没有数据。
    在这里插入图片描述

    • 原因:
      list为什么显示数据(查询,作用域、转发):在list的servlet中 查询结果并将结果放入作用域,携带到list的jsp中;这样才有了grade的数据
      在这里,只是转发过去,但是并没有查询数据、放入作用域。
      不能在转发前增加查询代码:用转发地址栏不变,每次刷新都是doAdd的地址,每次刷新doAdd的servlet都会添加数据。刷新一次,添加一次name值;刷新两次,添加两次name值……
      解决:增删改后跳转页面用重定向,查询后跳转用转发。查询后往作用域中放需要转发,增删该后用转发不用重定向 地址栏不变每次刷新都重复添加数据。查询后重定向加载不出数据。
  • 用重定向,重定向到/grade/list地址上 再刷新都是向list发请求,不会重复添加数据
    在这里插入图片描述
    在这里插入图片描述

添加数据代码:

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

7.2 修改

修改list的jsp,添加修改按钮

在这里插入图片描述
在这里插入图片描述
逻辑:点谁改谁的,把id携带到跳转中 get的方式将id从地址栏传入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

goUpdate

  1. 封装JdbcUnit函数
  2. 调用查询
  3. 将结果放入作用域转发到修改页面
    在这里插入图片描述
  4. 修改页面
    在这里插入图片描述

doUpdate

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

7.3 删除数据

list页面增加删除按钮

在这里插入图片描述

del的servlet

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值