jsp实现增删改查 您所在的位置:网站首页 数据库修改信息 jsp实现增删改查

jsp实现增删改查

2024-07-10 03:40| 来源: 网络整理| 查看: 265

学生信息CRUD——添加、修改、删除

在上一小节中,我们写好了list.jsp,用一个table表格显示数据库student表中的各个学生的(学号,姓名,生活费,出生日期),并对表格每一行的数据都配有三个操作按钮——删除、修改、增加。

删除 修改 添加

此处,讨论add.jsp与upd.jsp页面内容该如何呈现。

一、添加学生页面add.jsp 使用到的标签

1.form标签

表单在网页中主要负责数据采集功能。HTML中的标签,就是用于采集用户输入的信息,并且通过标签的提交操作,把采集到的信息提交到服务器端进行处理。

一个完整的表单应该由3部分组成:表单标签、表单域(输入框)、提交按钮。

表单标签 表单域 提交按钮

2.form标签属性

action:发送数据的地址name:表单名称method:提交方式 Get:提交的数据url可以看到,用于提交少量数据Post:提交的数据url看不到,用于提交大量数据

3.input标签

type属性值说明text文本框,用于输入单行文本password密码框radio单选框checkbox多选框file上传文件date日期选择框 value的作用: 预先填充表单中的字段值,方便用户进行编辑或提供默认值;方便以后将这些值传递给服务器进行处理。

4.下拉菜单select option

注意:如果需要设置默认选中,则需要添加selected属性值。

下拉菜单: 广州市 海珠区 荔湾区 增城区 越秀区

注:上次说过的标签,如table、tr、td等,此处不再说明。

页面主要内容

与之前“显示学生信息”不同,此处需要将数据提交给服务器,因此需要使用标签来设计整体框架。

在form表单之内,显示的是一个表格,包含每行,每行中的表项,表项当中的输入框,最终的提交按钮等。

head内容

与list.jsp同样,head的内容也包含两部分。

添加学生信息 body内容

1.form表单

//内容

设置action="add_success.jsp"属性,在表单提交后,转向该jsp文件执行相应处理。

2.table表格

//表格内容

表格标题,用caption标签设置,如下。

学生信息添加

设置各行,每行为:文字提示 + 对应输入框。

姓名 生活费 出生日期

注:每个标签的name尽量起的和数据库表中字段名一致,以免不必要的麻烦。

完整的add.jsp代码

学生信息添加 学生信息添加 姓名 生活费 出生日期 二、学生信息插入操作add_success.jsp

这个文件主要是写Java函数代码,直接将html相关内容删除,只写内的内容。

方法:request.getParameter()

(1)request.getParameter() 取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。

(2)request.getParameter() 方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。

举例

这个form提交请求后,在你的action中String name = request.getparameter("name");

那么name的值就是“hello word”。

因此,实际上来说,标签的name起成什么,和数据库字段无关,标签的name只是用于request.getParameter("[标签的name]")来将其传递给变量的。至于与数据库交互,数据库中的字段名是什么,后续处理才需要考虑。

但是,为了避免麻烦、混淆,将这些name统统与数据库字段名保持一致即可。

链接数据库

和之前list.jsp一样,大概是三个步骤。

Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mywork", "root", "123456"); PreparedStatement pstmt = conn.prepareStatement("insert into student(sname, money, birthday) values(?,?,?)");

注意:对于PreparedStatement中,insert的SQL语句的书写,需要用到“占位符”。需要将插入的确切值都用“?”即占位符来替换。

之后我们使用setObject()方法来填充我们的占位符。

方法:setObject()

作用:给SQL语句的占位符赋值的。优点:也有setString()方法,setInt()方法…但是如果数据很多,类型不一致,这样就需要一个一个判断,就很麻烦,所以直接使用setObject()方法,因为它可以自动识别数据类型,就很方便,提高了效率。语法:setObject(索引, 值)。其中,索引是从1开始的,分别对应每个占位符。即,索引为1,就对应第一个“?”,索引为5,就对应第五个“?”。——因此,当你需要操作新的字段时,不能一味地往后加索引,也有可能字段是在中间新插入的,索引需要从中间某处开始重新设置。

填充占位符

pstmt.setObject(1, sname); pstmt.setObject(2, money); pstmt.setObject(3, birthday);

执行提交的SQL语句,方法:executeUpdate()

方法1:executeQuery() 这个方法被用来执行 SELECT 语句,但也只能执行查询语句。执行后返回代表查询结果的ResultSet对象。 方法2:executeUpdate() 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数(int),指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。 pstmt.executeUpdate();

关闭链接

pstmt.close(); conn.close();

页面跳转

response.sendRedirect("list.jsp");

添加成功后,跳转回“学生信息列表”界面。

完整的add_success.jsp代码

三、修改信息页面upd.jsp

点击“修改”按钮,跳转到学生信息页面,将其中的旧数据修改为新数据,之后点击提交,即可修改信息。

因此,它的实现思路是,在add.jsp基础上,将各个输入框的信息要能够“显示出旧数据”。

此外,它的SQL语句也有所不同,它是update语句,而不是insert语句了。

修改

注意,我们通过请求href,已经获取到了当前点击学生的sid,之后作处理即可。

页面主要内容 head内容 修改学生信息 body内容 学生信息添加 学号 姓名 生活费 出生日期 四、学生信息修改操作upd_success.jsp

同理,把html相关代码全部删去,只负责写Java代码,负责前端input传递过来的数据与数据库进行交互。

接收参数

链接数据库

Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mywork", "root", "123456");

执行SQL语句

PreparedStatement pstmt = conn.prepareStatement("update student set sname=?, money=?, birthday=? where sid=?"); pstmt.setObject(1, sname); pstmt.setObject(2, money); pstmt.setObject(3, birthday); pstmt.setObject(4, sid); pstmt.executeUpdate();

关闭链接

pstmt.close(); conn.close();

页面跳转

response.sendRedirect("list.jsp")

完整upd_success.jsp代码

五、学生信息删除操作del_success.jsp

由于删除的过程是,在list.jsp中,点击“删除按钮”,对应记录消失。因此,不需要设置额外的界面,而只需实现这一功能操作即可。

因此,不需要del.jsp,只需del_success.jsp。

同理,将html相关代码均删除,只写Java代码。

删除

获取参数

String sid = request.getParameter("sid");

链接数据库

Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mywork", "root", "123456");

SQL语句执行

PreparedStatement pstmt = conn.prepareStatement("delete from student where sid=?"); pstmt.setObject(1, sid); pstmt.executeUpdate();

关闭链接

pstmt.close(); conn.close();

页面跳转

response.sendRedirect("list.jsp");

完整del_success.jsp代码



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有