本章主要内容是结合前面所学的Struts2框架知识,编写一个简单的借书系统的实例,其实这些主要是JavaWeb的知识,用Struts2开发而已,基础比较扎实的同学可以随意看看,但是这个项目会一直使用,后面学了Spring和Hibernate以及Mybatis后,会重构这个实例,推荐一看。
编写实例之前我先把数据库中的表给大家列出来,但是比较占篇幅,在其中我把MySQL如何建表及CRUD详细讲解,所以大家点击下面的链接进去看就行,基础较好的同学可以略过,直接看正文。
因为本章实例代码过于繁杂,不在教程里面贴出所有源码,文末有源码下载地址,自取即可。这里只介绍程序要点:
主页的整体呈现效果图:
6.1 实现“登录验证”功能
先来修改原程序,主要是改变登录后需要跳转到的页面,原来是main.jsp(欢迎主页),现在为上面刚刚设计的主界面,且要能根据登录角色的不同控制跳转方向。在struts.xml中修改配置,代码如下:
最后,还要修改登录页面login.jsp的代码,在其中加入<s:fielderror/>标签以便在页面上输出验证错误信息,代码为:
完成后,重新部署运行程序,于登录页上故意不输入任何内容而直接单击“登录”按钮,提交后系统显示验证错误提示信息,如图所示:
5.2 ——实现“借书”功能
当用“管理员”身份登录后,图片链接就可用了,单击“借书”链接,出现如图所示界面:
要实现这个界面,采用表格方式把页面分成3行2列,基本结构如下所示。
刚进入页面时,借书功能是不可用的,但当输入了借书证号后,单击“查询”按钮,会在右边显示该读者所借书籍,同时“借书”按钮变亮,表示可以进行借书操作了,如图所示:
输入正确的ISBN及图书ID,单击“借书”按钮,就可借得此书,如图所示,会发现最下面是新借的书:
当输入正确的借书证号,单击“查询”按钮时,提交到“selectBook.action”,根据struts.xml配置下面的代码:
处理的Action为LendAction中的selectAllLend方法,LendAction.java的该部分代码为,注意SQL语句会因为数据库的不同而不同哦:
由于用到了模型传值,而且在后面的与数据库交互时把查询的数据记录都转化为该类中的属性,故模型代码Lend.java为:
StudentDao中的方法selectByReaderId的作用就是根据借书证号,查询学生信息;如果有就返回该学生,如果没有就返回null。当然,在应用Student类之前要先编写该类的代码,Student. java就是student表对应的模型:
在LendDao中加入查询总记录的方法:
当单击要显示的页面时,就把pageNow值传到了Action,Action就会根据pageNow的值查询要显示的list集,这样查询功能就基本完成了。在Action处理之前做了一些判断工作,如果输入的借书证号不合法或不存在就会直接返回并保存一些信息。在“lendbook.jsp”中也有相应的输出:
本功能在判断是否有用户输入的“ISBN”时应用了BookDao的“selectBook”方法。图书模型Book.java代码为:
在判断图书ID时,因为同一本书不能被同时借两次或多次,故在已经借的书中不能包含刚刚输入的图书ID,判断方法为LendDao中的“selectByBookId”方法,代码实现。如果返回“lend”,表示已经存在,将返回错误信息。通过判断都合法后,将应用LendDao中的“addLend”方法对其进行插入操作:
由于该“ISBN”的图书被借出去一本,故该图书的库存量应该减少一本,所以在插入一条lend记录的同时要修改book的库存量(代码位于LendAction中的lendBook方法中):
同时,学生的借书量应该多出一本,故有这样的代码(位于LendAction中的lendBook方法中):
所以,在StudentDao中要编写修改学生信息的方法:
5.3 实现“图书管理”功能(CRUD)
总体界面设计单击“图书管理”图片链接,跳转到“bookmanage.jsp”,出现如图所示的页面:
该页面的结构相对简单,包含左右两大块,基本结构如下所示。
追加图书必须有能填写图书详细信息的表单,提供给用户输入新书的信息,该表单由bookinfo.jsp实现,在页面右边部分的“图书信息”表单中填写要添加的图书信息,如图所示:
可以发现,“图书追加”提交按钮代码:
因为当添加记录时,需要对数据进行验证,本部分采用Struts 2的验证框架来处理,验证框架文件“BookAction-validation.xml”配置为:
struts.xml中的action配置为:
“图书删除”功能:
“图书查询”功能:
例如,输入“ISBN”为刚刚添加进去的“978-7-121-23402-6”时,单击“图书查询”按钮,出现如图所示的页面:
“图书修改”功能:
增加修改图书应用的BookAction中的方法为:
至此,本章实例大致介绍完毕,篇幅原因,教程中只给出部分代码,完整代码请访问下面GitEE下载,有什么问题可以公众号留言,我看到会尽快回复。
本章实例代码GitEE地址:
https://gitee.com/jahero/bookManage.git