公司购物网站备案,遵义市乡村街道建设投诉网站,外贸会计做账流程,温州网站推广模板学生信息CRUD——添加、修改、删除
在上一小节中#xff0c;我们写好了list.jsp#xff0c;用一个table表格显示数据库student表中的各个学生的#xff08;学号#xff0c;姓名#xff0c;生活费#xff0c;出生日期#xff09;#xff0c;并对表格每一行的数据都配有…学生信息CRUD——添加、修改、删除
在上一小节中我们写好了list.jsp用一个table表格显示数据库student表中的各个学生的学号姓名生活费出生日期并对表格每一行的数据都配有三个操作按钮——删除、修改、增加。
tda hrefdel_success.jsp?sid% rs.getObject(sid) % classbtn btn-danger 删除/aa hrefupd.jsp?sid% rs.getObject(sid) % classbtn btn-primary修改/aa hrefadd.jsp classbtn btn-success添加/a
/td此处讨论add.jsp与upd.jsp页面内容该如何呈现。
一、添加学生页面add.jsp
使用到的标签
1.form标签
表单在网页中主要负责数据采集功能。HTML中的标签就是用于采集用户输入的信息并且通过标签的提交操作把采集到的信息提交到服务器端进行处理。
一个完整的表单应该由3部分组成表单标签、表单域输入框、提交按钮。
form表单标签 input typetext表单域 button typesubmit提交按钮/button
/form2.form标签属性
action发送数据的地址name表单名称method提交方式 Get提交的数据url可以看到用于提交少量数据Post提交的数据url看不到用于提交大量数据
form action# namelogin methodPOST/form3.input标签
type属性值说明text文本框用于输入单行文本password密码框radio单选框checkbox多选框file上传文件date日期选择框
value的作用 预先填充表单中的字段值方便用户进行编辑或提供默认值方便以后将这些值传递给服务器进行处理。
4.下拉菜单select option 注意如果需要设置默认选中则需要添加selected属性值。 下拉菜单selectoption广州市/optionoption海珠区/optionoption荔湾区/optionoption selected增城区/optionoption越秀区/option/select注上次说过的标签如table、tr、td等此处不再说明。 页面主要内容
与之前“显示学生信息”不同此处需要将数据提交给服务器因此需要使用form标签来设计整体框架。
在form表单之内显示的是一个table表格包含每行tr每行中的表项td表项当中的input输入框最终的提交按钮等。
head内容
与list.jsp同样head的内容也包含两部分。
headtitle添加学生信息/titlelink href../css/bootstrap.css relstylesheet
/headbody内容
1.form表单
bodyform actionadd_success.jsp//内容/form
/body设置actionadd_success.jsp属性在表单提交后转向该jsp文件执行相应处理。 2.table表格
bodyform actionadd_success.jsptable classtable table-bordered table-hover stylewidth: 50% aligncenter//表格内容/table/form
/body表格标题用caption标签设置如下。
captionh2center学生信息添加/center/h2
/caption设置各行每行为文字提示 对应输入框。
trtd姓名/tdtdinput typetext namesname classform-control/td
/tr
trtd生活费/tdtdinput typetext namemoney classform-control/td
/tr
trtd出生日期/tdtdinput typedate namebirthday/td
/tr
trtd/tdtdinput typesubmit value添加 classbtn btn-successinput typereset value重置 classbtn btn-success/td
/tr注每个标签的name尽量起的和数据库表中字段名一致以免不必要的麻烦。 完整的add.jsp代码
%--Created by IntelliJ IDEA.User: 11202Date: 2024/4/3Time: 13:12To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle学生信息添加/titlelink href../css/bootstrap.css relstylesheet
/head
bodyform actionadd_success.jsptable classtable table-bordered table-hover stylewidth: 50% aligncentercaptionh2center学生信息添加/center/h2/captiontrtd姓名/tdtdinput typetext namesname classform-control/td/trtrtd生活费/tdtdinput typetext namemoney classform-control/td/trtrtd出生日期/tdtdinput typedate namebirthday classform-control/td/trtrtd/tdtdinput typesubmit value提交 classbtn btn-successinput typereset value重置 classbtn btn-warning/td/tr/table/form
/body
/html
二、学生信息插入操作add_success.jsp
这个文件主要是写Java函数代码直接将html相关内容删除只写% %内的内容。
方法request.getParameter()
1request.getParameter() 取得是通过容器的实现来取得通过类似postget等方式传入的数据request.setAttribute()和getAttribute()只是在web容器内部流转仅仅是请求处理阶段。
2request.getParameter() 方法传递的数据会从Web客户端传到Web服务器端代表HTTP请求数据。
举例
form actionxxx input namename valuehello word/input typesubmit value提交//form这个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()
方法1executeQuery() 这个方法被用来执行 SELECT 语句但也只能执行查询语句。执行后返回代表查询结果的ResultSet对象。 方法2executeUpdate() 用于执行 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代码
% page importjava.sql.Connection %
% page importjava.sql.DriverManager %
% page importjava.sql.PreparedStatement %%--Created by IntelliJ IDEA.User: 11202Date: 2024/4/3Time: 13:47To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
%//接收参数String sname request.getParameter(sname);String money request.getParameter(money);String birthday request.getParameter(birthday);//链接数据库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(?,?,?));pstmt.setObject(1, sname);pstmt.setObject(2, money);pstmt.setObject(3, birthday);pstmt.executeUpdate();pstmt.close();conn.close();//页面跳转response.sendRedirect(list.jsp);%
三、修改信息页面upd.jsp 点击“修改”按钮跳转到学生信息页面将其中的旧数据修改为新数据之后点击提交即可修改信息。 因此它的实现思路是在add.jsp基础上将各个输入框的信息要能够“显示出旧数据”。 此外它的SQL语句也有所不同它是update语句而不是insert语句了。 a hrefupd.jsp?sid% rs.getObject(sid) % classbtn btn-primary修改/a注意我们通过请求href已经获取到了当前点击学生的sid之后作处理即可。 页面主要内容
head内容
headtitle修改学生信息/titlelink href../css/bootstrap.css relstylesheet
/headbody内容
form actionupd_success.jsptable classtable table-bordered table-hover stylewidth: 50% aligncentercaptionh2center学生信息添加/center/h2/caption%String sid request.getParameter(sid);Class.forName(com.mysql.cj.jdbc.Driver);Connection conn DriverManager.getConnection(jdbc:mysql://localhost:3306/mywork, root, 123456);PreparedStatement pstmt conn.prepareStatement(select * from student where sid?);pstmt.setObject(1, sid);ResultSet rs pstmt.executeQuery();if(rs.next()){%trtd学号/tdtdinput typetext namesid classform-control value%rs.getObject(sid)% readonly/td/trtrtd姓名/tdtdinput typetext namesname classform-control value%rs.getObject(sname)%/td/trtrtd生活费/tdtdinput typetext namemoney classform-control value%rs.getObject(money)%/td/trtrtd出生日期/tdtdinput typedate namebirthday value%rs.getObject(birthday)%/td/trtrtd/tdtdinput typesubmit value提交 classbtn btn-successinput typereset value重置 classbtn btn-warning/td/tr%}rs.close();pstmt.close();conn.close();%/table
/form四、学生信息修改操作upd_success.jsp 同理把html相关代码全部删去只负责写Java代码负责前端input传递过来的数据与数据库进行交互。 接收参数
%//接收参数String sid request.getParameter(sid);String sname request.getParameter(sname);String money request.getParameter(money);String birthday request.getParameter(birthday);
%链接数据库
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代码
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.PreparedStatement %%--Created by IntelliJ IDEA.User: 11202Date: 2024/4/3Time: 15:29To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
%//传递参数String sid request.getParameter(sid);String sname request.getParameter(sname);String money request.getParameter(money);String birthday request.getParameter(birthday);//建立链接Class.forName(com.mysql.cj.jdbc.Driver);Connection conn DriverManager.getConnection(jdbc:mysql://localhost:3306/mywork, root, 123456);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);
%
五、学生信息删除操作del_success.jsp 由于删除的过程是在list.jsp中点击“删除按钮”对应记录消失。因此不需要设置额外的界面而只需实现这一功能操作即可。 因此不需要del.jsp只需del_success.jsp。 同理将html相关代码均删除只写Java代码。 a hrefdel_success.jsp?sid% rs.getObject(sid) % classbtn btn-danger 删除/a获取参数
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代码
% page importjava.sql.DriverManager %
% page importjava.sql.Connection %
% page importjava.sql.PreparedStatement %%--Created by IntelliJ IDEA.User: 11202Date: 2024/4/3Time: 15:39To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
%//传递参数String sid request.getParameter(sid);String sname request.getParameter(sname);String money request.getParameter(money);String birthday request.getParameter(birthday);//建立链接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);
%