收藏 分享(赏)

08.图书管理系统.doc

上传人:ysd1539 文档编号:7428796 上传时间:2019-05-17 格式:DOC 页数:51 大小:2.11MB
下载 相关 举报
08.图书管理系统.doc_第1页
第1页 / 共51页
08.图书管理系统.doc_第2页
第2页 / 共51页
08.图书管理系统.doc_第3页
第3页 / 共51页
08.图书管理系统.doc_第4页
第4页 / 共51页
08.图书管理系统.doc_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、第 8 章 慕 仁 大 学 图 书 馆 管 理 系 统(JSP+Servlet+Spring+Oracle 实现,共 4100 行代码)近年来,随着出版业的发展,图书数量倍增,高校的图书馆也不断发展,但由于学生和图书的数量太多,传统的图书借阅及图书管理越来越不适应学校规范管理的要求。而计算机信息技术的飞速发展,使得运用计算机管理图书成为可能。本章将以开发一个图书管理系统为例,介 绍此 类管理系统软件的开发。通过本章的学习,读者可以灵活运用如下内容:恰当使用 Spring 框架提供的 IoC 容器进行各受管 Bean 之间的注入。 使用 JdbcTemplate 将数据源封装,实现数据库中数据的

2、查询与更新。 合理使用事务进行数据库中数据的更新,保证数据的一致性。 恰当封装公用代码,实现代码的可复用性。 合理使用 SQL 语句,提高系 统的性能。 亮剑 Java Web 项目开发案例导航3248.1 开发背景随着学校的发展,学生人数日益增多,高校图书馆的管理工作变得繁琐,而传统的人工管理方式已不能满足数量巨大的图书和其借阅信息的管理要求,经详细分析其有如下缺点: 图书和学生信息不易维护,数据量大。 查询不方便,借阅和还书速度过慢。 各种信息的记录靠手写,数据容易丢失。为了弥补上述缺陷,便于图书的维护和借阅工作,提高借阅和还书的效率,开发出此图书管理系统,以解决效率低下问题,实现图书管理

3、信息化。 8.2 系统分析开发此图书管理系统之前,做好全面的系统分析工作,知道其要实现哪些具体的功能,并根据分析做好数据库的设计工作,为后期开发打下基础。 8.2.1 需求分析通过与某高校图书馆管理人员进行交流后,最终确定本系统要具备以下功能。1学生用户端 查询图书,学生用户可以对图书馆的图书进行查找,以找到自己需要的书。 预约图书,如果想借的书已经借出,可以进行图书预约。 学生可以进入系统,查询自己的基本信息(如当前借阅和历史借阅等信息) 。 挂失图书,图书如果丢失,可以在学生端进行挂失。2管理员端 学生管理,对学生信息的增、删、改、查等操作。 图书管理,包括对图书的增、删、改等操作。 管理

4、员管理,有权限控制,分为超级管理员和普通管理员。8.2.2 可行性分析可行性分析是对项目的可行程度进行分析,管理层根据可行性分析决定是否开发此系统。其包括技术可行性、经济可行性、营运可行性。通过对需求分析的研究,对本项目的可行性分析如下。1引言图书是人类获取知识的最重要的途径之一,随着读者和书籍的日益增多,对图书的管理要求也日益提高,因此实现图书的信息化管理势在必行。1)编写目的从现有技术及图书馆需求等方面研究该图书管理系统的可行性,为上层决策提供依据。2)项目背景 项目提出者:某高校图书馆。 项目开发者:某软件公司。 系统用户:该校学生用户及图书馆的管理人员。第 8 章 慕仁大学图书馆管理系

5、统3252可行性分析的前提1)系统要求学生端需要包含学生借阅图书、预约图书、丢失图书和罚款记录的基本信息,管理员端则需要对这些信息进行管理,如借阅的管理、学生的管理及图书的管理等,另外要实现图书的查询功能,使用户可方便地找到想要的书籍。2)系统目标图书馆管理系统的目标是实现图书馆的管理信息化,提高借阅工作的管理效率,更好地维护图书的信息,为广大学生借阅图书带来方便。3对图书馆支出与收益的分析该图书馆的管理比较松散,大部分工作需要手工操作,对诸多信息的维护不仅费用高、工作量大,而且信息的安全性和数据的完整性很难得到保障。学校支出了部分的资金进行本系统的开发后,大部分工作实现了自动化,图书馆只花费

6、很少的人力和物力即可进行系统的维护,而且还降低了数据被无意破坏的风险。4对公司技术支持的分析该系统可以采用 JSP+Spring+Tomcat+Oracle 数据库来完成,公司之前已经开发过很多类似的项目,完全可在要求的时间内完成该系统的开发。5对公司支出与收益的分析该项目要求在 20 天内完成,要求有一年的维护期,经分析,去除开发费用及维护费用,公司最后所得利润为 2 万元。对该系统的开发既可以增加公司的技术储备,又可提高对类似项目开发的熟练程度。6社会因素的分析该系统完全由本公司独立开发完成,是按本公司的开发流程进行开发的,在法律方面没有任何侵权行为,完全符合合同的规定。7结论根据上述分析

7、,公司认为此项目结构清晰、功能合理,客户要求的开发时间非常充裕,利润与开发成本比也比较高,可在一定程度上提高公司的效益,因此公司决定开发此项目。8.3 系统设计通过与图书馆管理人员进行更深入地交流并进行了可行性分析后,公司对本系统的功能要求有了较深入地了解,下面就可以确定系统的最终目标及初步的功能结构。8.3.1 系统目标通过系统分析并与图书馆管理人员再次探讨,最终确定系统的最终目标如下。 实现需求分析阶段客户提出的功能。 学生可以在客户端查看预约通知。 界面导航明确,方便学生用户使用。8.3.2 系统功能结构本系统的代码在 4100 行左右,其中包括学生端和管理员端,学生端只能进行简单地查询

8、和修改密码等功能,而管理员则有多项管理功能,其系统结构如图 8-1 所示。亮剑 Java Web 项目开发案例导航326图 书 管 理 系 统 学 生 端 管 理 端 学生登录 修改密码 查询借阅信息 查询账单信息 预约和挂失图书 管理员登录 修改密码 管理员管理 罚款管理 图书检索 图书管理 学生管理 借阅管理 图 8-1 系统结构图8.3.3 构建开发环境开发此图书管理系统所需要用到的软件环境如下。 JDK 1.6 及其以上版本:1.6 版本作为目前的最新版本,增加了许多新特性,读者根据操作平台的不同可到 Sun 官网下载不同版本。 数据库:Oracle 10g 数据库,Oracle 数据

9、库系统是最早商品化的关系型数据库系统,是目前应用最广泛、功能强大、可用性很高的数据库。 Web 服务器: Tomcat 6.0 及其以上版本,其功能强大、方便易用,适应于中小型系统的开发,且 Tomcat 可以从网上免费下载,从而可降低开发成本。 业务层:Spring 2.5 版本,Spring 是一个优秀的 JavaEE 开源框架,其提供的控制反转及面向方面的编程插件式架构降低了应用组件之间的依赖性。8.3.4 学生端预览学生端的功能比较简单,主要是一些信息的查询操作,具体页面如下。(1)启动 Tomcat 服务器,打开浏览器输入正确的地址进入学生端主页,如图 8-2 所示,在此页面输入正确

10、的学号和密码就可以登录进入该系统。(2)登录系统后,就可以单击页面上的导航菜单,进行不同信息的查询功能。单击“读者信息”时,其页面如图 8-3 所示,在此页面可以修改自己的密码。图 8-2 学生端主页 图 8-3 读者信息(3)如果学生想查询自己当前借阅和历史借阅的一些情况,可以单击书刊借阅进入相应页面进行查询,其效果如图 8-4 所示,在此页面可以查询到很多信息,如罚款记录、丢书记第 8 章 慕仁大学图书馆管理系统327录和欠款状态等,并且还可以挂失借阅证。(4)学生预约图书后,可以通过查看预约通知得到自己的预约信息,在此页面可以看到所有通知,也可输入自己的学号进行查询,页面如图 8-5 所

11、示。图 8-4 借阅信息页面 图 8-5 预约通知页面(5)学生 借 书 之 前 可 以 查 找 想 借 书 的 信 息 , 如 是 否 在 馆 等 信 息 , 图 书 检 索 页 面 如 图 8-6 所示 。图 8-6 图书检索页面8.3.5 管理端预览前面介绍了学生端各项功能,其中预约通知和图书检索功能是不需要登录的,这也符合简单易用这一特点,下面将对管理员端进行介绍。 (1)在浏览器输入正确的地址进入管理端主页,该页是管理员登录的页面,登录页面如图 8-7 所示。(2)如果登录的管理员是超级管理员,则可在账号维护页面进行管理员管理,例如选中添加管理员时页面如图 8-8 所示,而普通管理员

12、在此页面只有修改自己密码的功能,单击此页面的其他导航菜单时,均提示没有权限进行操作。图 8-7 管理员登录页面 图 8-8 账号维护(3)在学生管理页面可以对学生进行管理,如添加新生、修改学生信息和删除学生等操亮剑 Java Web 项目开发案例导航328作,页面如图 8-9 所示。(4)当有新书入馆或者需要修改图书信息时,可以在图书管理页面操作实现这些功能,此页面如图 8-10 所示。图 8-9 学生管理页面 图 8-10 图书管理页面(5)当有学生进行借阅或者还书等操作时,可以在借阅管理页面实现,在此页面还可实现学生缴纳罚款的功能,借阅页面如图 8-11 所示。图 8-11 借阅管理页面8

13、.4 数据库设计在整个项目开发之前,做好数据库的分析和设计,充分考虑到要实现的功能,对于开发和后期维护有很重要的作用。8.4.1 数据库分析本项目采用的是 Oracle 数据库,Oracle 数据库系统在全球数据库市场的占有率超过三分之一,在各个行业有着广泛的应用,本项目将采用 Oracle 作为后台数据库。8.4.2 项目 E-R 图该系统包含的实体主要有:图书、学生、管理员,下面将分别介绍各实体及实体间的 E-R 图,通过 E-R 图来解释各实体的属性及其之间的关系。 学生 E-R 图,如图 8-12 所示。 图书和管理员 E-R 图,如图 8-13 所示。密 码 学 号 系 别 权 限

14、班 级 年 龄 性 别 姓 名 学 生 书 名 图 书 编 号 图 书 状 态 进 馆 时 间 价 格 ISBN号 出 版 社 作 者 图 书 登 录 名 权 限 管 理 员 密 码 第 8 章 慕仁大学图书馆管理系统329图 8-12 学生 E-R 图 图 8-13 图书和管理员 E-R 图 各个实体间简单关系,如图 8-14 所示。管 理 员 m 借 阅 学 生 管 理 图 书 n 管 理 m n n 1 图 8-14 实体间简单关系图说明:在系统的开发过程中,数据 库的设计直接影响着系统的后期开发,因此在数据库的设计过程中,要考虑周全,为后期的维护和系统性能的 扩展打下良好的基础。8.4

15、.3 数据库表的设计本系统共有 6 张表:学生基本信息表、管理员信息表、图书信息表、借阅关系表、罚款记录表、预约信息表,下面将分别对各表进行介绍。(1)学生基本信息表:用于记录学生用户的基本信息,其主要字段为学生学号、密码、姓名等,具体设计如表 8-1 所示。表 8-1 学生基本信息表(student )字段名称 数据类型 字段大小 是否主键 是否为空 说明StudentNO varchar 20 是 否 学号Password varchar 20 否 否 密码Name varchar 20 否 否 姓名Age number 2 否 是 年龄Gender varchar 2 否 是 性别Cla

16、ss varchar 50 否 是 班级Department varchar 50 否 是 系别Permitted number 1 否 是 借书权限建立该表的 SQL 语句如下:create table student(StudentNO varchar(20) primary key, Password varchar(20) not null,Name varchar(20) not null, Age number(2),Gender varchar(2),Class varchar(50),Department varchar(50), Permitted number(1) );(

17、2)管理员基本信息表:用于记录管理员的用户 ID、密码及级别,详细情况如表 8-2 所示。表 8-2 管理员基本信息表(manager)字段名称 数据类型 字段大小 是否主键 是否为空 说明ManageID varchar 20 是 否 管理员登录名ManagePwd varchar 20 否 否 登录密码ManageLevel number 1 否 否 管理员级别亮剑 Java Web 项目开发案例导航330建立该表的 SQL 语句如下:create table manage( ManageID varchar(20), ManagePwd varchar(20) not null,Mana

18、geLevel number(1) default 0,primary key(ManageID);(3)图书信息表:用于记录图书的基本信息,其具体实现如表 8-3 所示。表 8-3 图书基本信息表(book)字段名称 数据类型 字段大小 是否主键 是否为空 说明BookNO varchar 10 是 否 图书编号BookName varchar 50 否 是 图书名称Author varchar 50 否 是 图书作者Publish varchar 50 否 是 图书出版社BookIsbn varchar 20 否 是 图书 ISBN 号BuyTime varchar 50 否 是 进馆时间

19、BookPrice number 5 否 是 图书价格BookStatus number 1 否 否 图书状态建立该表的 SQL 语句如下:create table book(BookNO varchar(10) primary key,BookName varchar(50),Author varchar(50),Publish varchar(50),BookIsbn varchar(20),BuyTime varchar(50),BookPrice number(5,2),BookStatus number default 0);(4)借阅关系表:用来记录学生用户借阅图书的基本信息,包括

20、学号、书号、借阅的开始时间和结束时间等信息,其各字段的详细信息如表 8-4 所示。表 8-4 借阅信息表(borrow_list)字段名称 数据类型 字段大小 是否主键 是否为空 说明BorrowNO number N/A 是 否 借阅记录主键StudentNO varchar 20 否 否 学生学号BookNO varchar 20 否 否 借阅书号StartTime varchar 20 否 否 借阅开始时间End varchar 20 否 否 借阅结束时间XuJie number 1 否 否 是否续借Deal number 1 否 否 借阅记录的状态建立该表的 SQL 语句如下:crea

21、te table borrow_list(BorrowNO number,StudentNO varchar(20),BookNO varchar(10),StartTime varchar(20) not null,End varchar(20) not null, XuJie number(1) default 0,Deal number(1) default 0,primary key(BorrowNO),Foreign key(StudentNO) references student(StudentNO) on delete cascade, Foreign key(BookNO)

22、references book(BookNO) on delete cascade);(5)罚款记录表:用来记录学生罚款的信息,包括学生学号和罚款金额等信息,具体设计如表 8-5 所示。表 8-5 罚款信息表(amercement)字段名称 数据类型 字段大小 是否主键 是否为空 说明AmerceNO number N/A 是 否 罚款记录主键BorrowNO number N/A 否 否 对应借阅记录号StudentNO varchar 20 否 否 对应学生学号第 8 章 慕仁大学图书馆管理系统331Detail varchar 20 否 否 罚款项目Mulct number 5 否 否

23、罚款金额Pay number 2 否 否 是否缴纳PayTime varchar 20 否 是 缴纳时间建立该表的 SQL 语句如下:create table amercement(AmerceNO number,BorrowNO number,StudentNO varchar(20),Detail varchar(20) not null,Mulct number(5,2) not null,Pay number(1) default 0,PayTime varchar(20), primary key(AmerceNO),Foreign key(BorrowNO) references

24、borrow_list(BorrowNO) on delete cascade,Foreign key(StudentNO) references student(StudentNO) on delete cascade);(6)预约信息表:用来记录学生预约的图书信息,包括图书编号和学生学号及取书截止日期等信息,具体设计如表 8-6 所示。表 8-6 预约记录信息表(order_list)字段名称 数据类型 字段大小 是否主键 是否为空 说明OrderNO number N/A 是 否 预约记录主键StudentNO varchar 20 否 否 学生学号BookNO varchar 10 否

25、 否 图书编号EndTime varchar 20 否 是 截止日期建立该表的 SQL 语句如下:create table order_list(OrderNO number,StudentNO varchar(20), BookNO varchar(10), EndTime varchar(20),primary key(OrderNO),Foreign key(StudentNO) references student(StudentNO) on delete cascade,Foreign key(BookNO) references book(BookNO) on delete cas

26、cade);提示:因为涉及外键的问题,读 者创建表时, 请按照如上顺序 创建,另外有些表的主键是自增列,这在 Oracle 中是用序列和触发器完成的,具体实现请参阅光盘中本章目录中的 db.sql 脚本文件,这里不再赘述。8.5 开发前的准备工作由于本系统采用 JSP+Spring 开发,并且使用数据源连接池,所以要先做好相关的配置工作,包括建立数据库中的表,并插入一些测试数据等。8.5.1 表的建立和测试数据的插入8.4.3 节已经对表的设计进行了详细的介绍,下面将介绍如何在 Oracle 数据库中创建这些表,并插入一些数据用于开发中的测试,具体步骤如下。双击 SQL Plus,输入正确的用

27、户名和密码后,进入 Oracle 的 SQL Plus 命令行客户端。执行上一节介绍的创建表的 SQL 语句,并创建相应的序列和触发器,这些工作做完后,就可以插入一些测试数据了,插入测试数据的 SQL 语句如下。insert into manage values(wyf,123456,1);insert into student values(200501,123456,张 三 ,22,男 ,级 计 算 机 3班 ,计 控 学院 ,1);insert into book(BookNO,BookName,Author,Publish,BookIsbn,BuyTime,BookPrice) val

28、ues(368779,使 用 Ant进 行 Java开 发 ,美 Erik Hatcher Steve Lougharn,电 子 工 业 出 版亮剑 Java Web 项目开发案例导航332社 ,7121016834,2008-5-26,69.00);insert into borrow_list (StudentNO,BookNO,StartTime,End)values(200501,368779, 2008-9-26,2008-11-15);update book set BookStatus=1 where BookNO=368779;insert into order_list(St

29、udentNO,BookNO,EndTime)values (200502,358134, 2008-10-16);commit;对于各张表中信息的插入,请参考光盘中本章中的数据库脚本 db.sql,在此不再赘述。至此,代码开发前的准备工作已经完成,下面将详细介绍具体的开发过程。8.5.2 数据源的配置由于连接数据库使用的是数据源连接池技术,所以在开发之前要进行相应的配置,具体步骤如下。将光盘中软件目录下的 classes12.jar 复制到 Tomcat 安装目录下的 lib 文件夹中,此JAR 文件为连接 Oracle 数据库的驱动 JAR 包。打开 Tomcat 安装目录下的 conf

30、文件夹中的 server.xml 文件,在最后一个标记之前添加如下配置。提示:不同机器上安装的 Oracle 数据库用户名和密码不一样,所以在进行具体配置时以读者机器上为准。在 Tomcat 安装目录下的 webapps 中新建一个名为 BookManage 的文件夹,并将光盘中本章中的 css、img 和 js 文件夹复制到 BookManage 文件夹下,以后开发的所有 JSP 文件均放在此文件夹下。在 BookManage 中新建目录 WEB-INF,并在 WEB-INF 目录下新建两个文件夹,分别命名为 classes 和 lib,将光盘中软件目录下的 Spring 的支持 JAR 包

31、复制到新建的 lib 文件夹下,并在 WEB-INF 文件夹下新建一个 web.xml,在其中添加如下配置。DB Connectionjdbc/bookjavax.sql.DataSourceContainerindex.jsp 第 8 章 慕仁大学图书馆管理系统3338.5.3 Spring 的配置业务层使用的是 Spring 实现,所以在此要对 Spring 进行配置。在 WEB-INF 目录下新建appcontext.xml 文件,在其中添加如下配置。java:comp/env/jdbc/book打开 WEB-INF 下的 web.xml 文件,在其中的之前添加将 Spring 和 We

32、b 集成的配置文件,如下所示。contextConfigLocation/WEB-INF/appcontext.xmlorg.springframework.web.context.ContextLoaderListener 8.5.4 系统目录结构与框架在准备工作做完后,建立的项目文件结构图应该具有如图 8-15 所示的组织结构。说明:在图 8-15 中,src 文件夹下存放的为 Servlet、业务方法等.java 文件,BookManage 目录下存放的为 Spring 框架所需要的一些 JAR 包, images 文件夹下存放的为系统所需要的一些图片、 JavaScript 脚本和一些

33、 CSS 文件。了解了系统的目录组织结构后,读者还需要对本项目的基本框架有所了解,前台架构图如图 8-16 所示。亮剑 Java Web 项目开发案例导航334图 8-15 目录结构图图 8-16 项目前台架构图提示:图 8-16 中的 StudentServlet 是控制器,用来管理各页面传过来的请求;各JSP 页面用来进行显示;DButil 、StuDB 等为 Spring 的受管 Bean。另外,由于本系统前台动作很多,很难在图中一一列 举出来,故 图 8-16 中仅选取了一些具有代表性的动作,详细情况请读者参看下文中对各动作的介绍。图 8-16 中所有的动作均用字母来表示,其具体动作含

34、义如表 8-7 所示。表 8-7 前台动作对照表动作编号 动作内容 动作编号 动作内容 动作编号 动作内容a 学生登录 f 查询历史借阅 k 挂失图书b 学生注销 g 查询丢书记录 l 挂失借书证c 查看个人资料 h 查询罚款记录 m 搜索图书d 修改密码 i 查询欠款状态 n 预约图书e 查询当前借阅 j 续借图书 o 查询个人预约第 8 章 慕仁大学图书馆管理系统335上面 介 绍 了 前 台 的 一 些 动 作 及 其 含 义 , 下 面 来 了 解 一 下 后 台 的 架 构 , 其 架 构 图 如 图 8-17 所示 。图 8-17 项目后台架构图提示:图 8-17 中的 Manag

35、eServlet 是控制器,用来管理后台各页面传过来的请求;各 JSP 页面用来进行显示;DButil 、StuDB 等为 Spring 的受管 Bean。另外,由于本系统后台动作很多,很难在图中一一列 举出来,故 图 8-17 中仅选取了一些具有代表性的动作,详细 情况请读者参看下文中 对各动作的介绍。图 8-17 中所有的动作均用字母来表示,其具体动作含义如表 8-8 所示。表 8-8 后台动作对照表动 作 编 号 动 作 内 容 动 作 编 号 动 作 内 容 动 作 编 号 动 作 内 容a 管理员登录 h 添加新生 n 删除图书b 管理员注销 i 删除学生 o 搜索图书c 账号维护

36、j 修改学生信息 p 学生借书d 管理员修改密码 k 搜索学生 q 学生还书e 添加管理员 l 添加图书 r 查询学生欠款f 重置管理员密码 m 编辑图书 s 缴纳罚款g 删除管理员 t 换页动作8.6 学生登录注销模块学生端的有些功能不需要登录就可以使用,如图书查询和查看预订通知的列表等,但是要进行私人信息的查询,就需要登录验证身份才可使用。本节将介绍开发登录和注销功能的开发,开发完毕其页面显示如图 8-18 所示。亮剑 Java Web 项目开发案例导航336图 8-18 登录注销页面8.6.1 登录界面开发学生登录页面同时也是学生端的主页,主页的搭建用到了框架,顶部是学生端一些功能的导航

37、链接,而下部则是具体的功能页面,搭建主页的代码如下。代码位置:见光盘中本章源代码的 index.jsp。1 2 欢 迎 光 临 图 书 馆 3 4 5 6 7 8 9 10 很 抱 歉 ! 这 是 一 个 分 帧 页 面 , 但 由 于 你 的 浏 览 器 不 支 持 , 所 以 不 能 浏 览 !11 Sorry!This page uses frames,but your browser doesnt support them.12 上述代码只是搭建了主页的框架,对于顶部的导航连接 topFram.jsp 的实现请参阅光盘中的源代码,这里不再赘述,下面简单介绍 login.jsp 中的登录

38、表单的搭建。代码位置:见光盘中本章源代码的 login.jsp。1 2 3 4 登 录 我 的 图 书 馆7 8 9 用 户 名 : 10 11 12 密 码 : 13 14 15 16 第 8 章 慕仁大学图书馆管理系统33717 18 19 21 22 欢 迎 来 到 图 书 馆 !“);24 out.println(“【 查 看 /修 改 个 人 信 息 】 “);26 out.println(“【 注 销 】 “);27 % 第 422 行判断学生有没有登录,如果没有登录,则显示登录表单,第 1821 行为登录过程中,如果服务端有提示消息,则显示提示消息。 第 2227 行为学生登录后

39、,用于显示欢迎语、一些功能的超链接(如注销)等。8.6.2 登录注销功能的实现9.6.1 节介绍了登录页面的搭建,本节将介绍如何实现登录的业务功能,包括 Servlet 端的业务逻辑和数据库端的用户名和密码验证等。在开发一个 Servlet 之前,需要先对其进行配置。打开本应用下的 web.xml 文件,在标记之前添加如下配置。StudentServlet wyf.wyy.StudentServlet StudentServlet /StudentServlet做好以上的配置工作后,就可以开发接受页面请求并响应 Servlet 端代码了,本项目中开发的所有 Java 类均在 WEB-INF 目

40、录下的 classes 文件夹中。下面介绍上述配置的StudentServlet 中关于登录注销动作的响应代码。代码位置:见光盘中本章源代码 WEB-INF/classes 目录下的 StudentServlet 类。1 public class StudentServlet extends HttpServlet2 public void doGet(HttpServletRequest req, HttpServletResponse res)3 throws ServletException, IOException4 this.doPost(req,res); /调 用 doPost方

41、 法5 6 public void doPost(HttpServletRequest req, HttpServletResponse res)7 throws ServletException,IOException8 res.setCharacterEncoding(“GBK“); /设 置 res编 码 为 GBK9 req.setCharacterEncoding(“GBK“); /设 置 req编 码 为 GBK10 HttpSession session = req.getSession(); /得 到 session对 象11 String action = req.getPa

42、rameter(“action“); /得 到 action动 作12 String message = “; /声 明 消 息 字 符 串13 String sql = “; /声 明 SQL语 句 字 符 串14 Vector v; /声 明 信 息 向 量 引 用15 Vector student; /存 放 学 生 信 息 的 向 量16 Vector ve = new Vector(); /存 放 临 时 SQL语 句17 final int delay = 30; /续 借 图 书 天 数18 final int distance = 5; /限 制 可 以 续 借 的 时 间19

43、 String stuNO = (String)session.getAttribute(“stuNO“);亮剑 Java Web 项目开发案例导航338/得 到 当 前 登 录 的 学 生 信 息20 WebApplicationContext wac /获 取 Web环 境 中 的 Spring容 器 引 用21 = WebApplicationContextUtils.getWebApplicationContext (this.getServletContext();22 StuDB sdb = (StuDB)wac.getBean(“StuDB“); /得 到 StuDB对 象23

44、DBUtil dbu = (DBUtil)wac.getBean(“DBUtil“); /得 到 DBUtil对 象24 if(action.equals(“login“) /登 录 的 请 求25 stuNO = req.getParameter(“uname“).trim(); /得 到 登 录 用 户 名26 String pwd = req.getParameter(“pwd“).trim(); /得 到 登 录 密 码27 if(sdb.verify(stuNO,pwd) /登 录 成 功28 student = sdb.getStuInfo(stuNO); /执 行 查 询 得 到

45、 该 学 生 信 息29 session.setAttribute(“stuNO“,stuNO); /将 学 号 放 进 session30 session.setAttribute(“stuName“,student.get(1);/将 学 生 姓 名 放 进 session31 32 else33 message = “非 法 的 用 户 名 和 密 码 , 请 核 对 后 重 新 登 录 。 “;/登 录 失 败 消 息34 req.setAttribute(“message“, message);/将 提 示 消 息 放 到 请 求 页 面35 36 req.getRequestDis

46、patcher(“login.jsp“).forward(req,res);/转 发 置 login页 面37 38 else if(action.equals(“logout“) /注 销 请 求39 req.getSession(true).invalidate(); /使 session失 效40 req.getRequestDispatcher(“login.jsp“).forward(req,res);/转 发 至 登 录 页 面41 第 25 行为 Servlet 类的 doGet 方法,在方法内简单调用了 doPost 方法,第 818 行设置了请求和响应的编码为 GBK,并声明

47、和创建了此方法内需要用到的一些对象和字符串引用,如 SQL 语句引用,Vector 类型的信息向量等。 第 1923 行得到当前登录的学生学号,并且得到当前 Web 环境中的 Spring 容器对象,并通过此对象得到 StuDB 和 DBUtil 的 Bean 对象。 第 2437 行为登录动作的实现,接收用户输入的学号和密码,调用数据库方法进行验证,并有提示错误消息的功能,登录成功则将学生学号和学生姓名存放进 session中,第 3841 行为注销动作的实现,使 session 失效。8.6.3 实现登录验证前面介绍的是 Servlet 端的登录和注销响应,对于其调用的实现验证用户名和密码

48、的正确性的数据库方法还没有介绍,此方法连接数据库时是通过 Spring 的 JdbcTemplate 来实现的,所以在开发代码之前要对这个数据库操作 Bean 进行依赖注入,在 appcontext.xml 中添加如下配置。做好如上配置后,开发实现功能的代码类 StuDB 时,只需在类中提供相应的 set 方法,就可以得到 Spring 中的 jdbcTemplate 的实例来使用了,具体代码如下。代码位置:见光盘中本章源代码 WEB-INF/classes 目录下的 StuDB 类。1 public class StuDB 第 8 章 慕仁大学图书馆管理系统3392 private JdbcTemplate jt; /声 明 JdbcTemplate对 象 引 用3 private List rl = null; /声 明 List对 象 引 用4 private String sql = null; /声 明 SQL字 符 串 引 用5 public void setJt(JdbcTemplate jt) /设 置 jt成 员 的 方 法6 this.jt = jt; /设 置 jt属 性 的 值7 8 public boolean verify(String StuNO,String pwd) /登 录 验 证9 boolean result = f

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报