第一次写文,做一次小尝试。把一年前学校里面的小作业放上来,供参考
代码将于文末以百度网盘的形式分享出来
一.实验背景:
熟悉并掌握如何编写编写各个页面的参数传递以及jsp基本知识。
1、实验目的
通过JSP&JDBC的综合运用,掌握服务端Java Web数据库编程的基本原理和常用技术。具体包括:
1、编写Java代码,熟悉并掌握JDBC的使用,包括Connection、Statement、PreparedStatement和ResultSet等对象的使用。
2、掌握JDBC在JSP页面中的综合运用。
3、掌握JSP&JDBC对单表和关联关系表进行CRUD等常规数据操作。
2、实验要求
1. 掌握Web JDBC编程的基本步骤和常用对象应用;
2. 掌握模块开发的基本规范;
3. 写出实验报告。
3、背景知识
在客户端综合编程实验基础上,结合JSP&JDBC等技术,完成相应的数据显示和操作功能,并调试运行程序
二.实验过程与结果
1.开发登录页面,利用用户表信息实现登录判断,登录成功转向首页,失败给予提示;
思路:登录功能通过request获取到文本框输入的用户名于密码,通过与数据库里user表中比对,如果SQL语句执行的结果集不为空则跳转到导航页面否则跳转到错误页面。
关键代码:
String url="jdbc:sqlserver://localhost:1433;databasename=bookstore";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn=DriverManager.getConnection(url,"sa","cx19991120");
String sql="Select * from user1 where username=? and pwd=?";
PreparedStatement pstm=conn.prepareStatement(sql);
pstm.setString(1,name);
pstm.setString(2,pwd);
System.out.print(sql);
pstm.executeQuery();
ResultSet rs=pstm.executeQuery();
if(rs.next()){
session.setAttribute("username",name);
session.setAttribute("pwd", pwd);
response.sendRedirect("index2.html");
}
else{
response.sendRedirect("undeveloped.html");
}
运行截图:
图1-1:登录错误1
图1-2:登录错误2
图1-3:登录正确1
图1-4:登录正确2
2.分别开发针对书籍表、出版社表、书籍类型表和用户表的显示以及增加、更新和删除操作;要求根据实际情况分别采用Statement对象和PreparedStatement对象发送SQL语句;
思路:出版社,用户,以及书籍类型表的显示编辑添加页面的设计思路大同小异,仅仅需要改一些SQL语句,以及列名等基本参数,对于书籍表来说则较为复杂,需要连接三张表,显示页面的话需要根据publishid以及booktypeid连接出版社表以及类型表通过value进而找到对应的名称。同样书籍页面编辑也是比较麻烦,因为需要回显类型以及出版社字段,需要用到checked和selected属性和以前学过的JavaScript知识。
关键代码:
<td>
<select name="book_publish">
<option value="">--请选择出版社---</option>
<%while(rs1.next()) {%>
<option value="<%=rs1.getString("publishid")%>" <%if(publish.equals(rs1.getString("publishid"))){%> selected <%}%>><%=rs1.getString("出版社名称") %></option>
<%} %>
</select>
</td>
<td class="firsttd">类别:</td>
<td>
<%while(rs2.next()) {%>
<input type="radio" name="book_type" value="<%=rs2.getString("booktypeid")%>" <%if(type.equals(rs2.getString("booktypeid"))){%> checked <%}%>><%=rs2.getString("类型名称") %>
<%} %>
</td>
运行截图:
图1-5:书籍显示页面
图1-6:书籍编辑页面1
图1-6:书籍显示页面2
图1-7:书籍删除页面
图1-8:书籍删除页面2
3. 实现书籍查询功能。
思路:首先需要连接三张表,查询条件用SQL语句的拼接实现,最后回显数据。
关键代码:
String sql = "select a.书号,a.书名, a.作者,a.价格,b.出版社名称 ,c.类型名称,a.出版时间 from book a,publish b,booktype c ";
sql+="where a.出版社=b.publishid and a.类型=c.booktypeid ";
String number=request.getParameter("number");
String name=request.getParameter("name");
String author=request.getParameter("author");
String publish=request.getParameter("publish");
String type=request.getParameter("type");
if(number!=""){
sql+="and a.书号 like '%" + number + "%'";
}
if(name!=""){
sql+="and a.书名 like '%" + name + "%'";
}
if(author!=""){
sql+="and a.作者 like '%" + author + "%'";
}
if(publish!=""){
sql+="and a.出版社=" + publish +" ";
}
if(type!=""){
sql+="and a.类型=" + type +" ";
}
运行截图:
图1-9:书籍查询页面
图1-10:书籍查询结果
在录屏当中各种情形下的搜索条件都已测试,这里仅展示一种情况。
三、实验分析与总结
(1)实验分析
出版社页面以及书籍页面老师上传了教学视频,跟着视频一步一步走所以没有遇到什么问题。而相对于用户模块和书籍类型模块与出版社模块基本上是照葫芦画瓢,内容仅仅做了一点点修改,途中也没遇到什么问题。但在查询模块遇到了一些问题。
发现问题:在输入查询条件后查询结果集为空。
图2-1:程序出错图1
图2-2:程序出错图2
问题缘由:我尝试将SQL语句打印出来,看能不能发现什么问题,于是便发现了端倪,因为查询的思路是如果某个查询条件不为空则给SQL加上对于的条件,但那些文本框为空的值,SQL语句同样也加了进去(刚刚只用了出版社的搜索条件,但其他搜索条件的SQL语句也加了进去),如下图。
图2-3:程序出错代码
解决问题:所以我判断问题出在了if判断语句,因为文本框什么都不输他的值仍然不为空,所以我将if(**!=null)改换为if(***!=””),结果查询结果正常显示,问题解决。
(2)实验总结
经过五次实验的磨练,一个趋于完整的书籍后台管理系统基本完成。首先是通过简单的html把每个页面的大致雏形展现出来,再循序渐进的为每个页面增加JavaScript代码,最终用动态的jsp代替先前的静态html。当实验五完成的时候发现,其实每个页面的增删改查功能都是大相径庭,仅仅需要改其中的一小部分就可以搬过来套用。而在不断的实验中,提升的不仅仅是代码能力,而是一种思路,同样自己的改bug能力也在渐入佳境,有的时候不用百度也可以找出错误,但其实这还远远不够。
四.源码
所有原码于同文件夹下的table文件夹中。文章来源:https://www.toymoban.com/news/detail-525609.html
百度网盘:
链接:https://pan.baidu.com/s/14qaxEl-a5vjA0jBVAobHPQ
提取码:k642文章来源地址https://www.toymoban.com/news/detail-525609.html
到了这里,关于【JavaWeb实验】图书管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!