




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 34 JavaWebJavaWeb 课程设计课程设计 实验报告实验报告 班级 班级 计算机 09 2 实验内容 实验内容 图书馆管理系统 赵伯涛 44 号 组长 张宝红 42 号 成员 成员 黄海清 22 号 实验时间 实验时间 从 2011 年 12 月 3 日 至 2011 年 12 月 9 日 指导老师 指导老师 李启锐 2 34 一 实验目的 一 实验目的 1 在实践中巩固本学习所学的 JavaWeb 技术 2 在实践中初步使用设计模式 GoF 体验设计模式带来的好处 3 配合数据库的使用 实现一个功能完善的小型系统 二 实验内容 二 实验内容 开发一个图书管理系统 实现图书馆的各种管理操作 如图书入库 作废 借书证提供 挂失处理 图书的借出 归还 续借 丢失以及超期 处理 s 三 业务逻辑 三 业务逻辑 3 34 四 数据库设计 四 数据库设计 根据业务逻辑设计出数据库 表结构及关系如下图 4 34 数据库导入文本保存在 DataBaseSQL txtDataBaseSQL txt 文档中 数据库数据保存在 Data txtData txt 文档中 五 框架结构 五 框架结构 5 34 采用了类似与 MVC 框架的框架结构 页面端使用了 ExtJS 技术 包含 AJAX 增加了业务层和 数据库操作层 控制器层调用业务层 业务层 调用数据库操作层 将控制 业务 数据库操作分别分层将控制 业务 数据库操作分别分层 六 技术性代码 六 技术性代码 本实验的代码在 Library zipLibrary zip 中 1 tomcat 数据库连接池数据库连接池技术 在 tomcat 中的配置文件 server xmlserver xml 文件中配置项目 Context 标签 再加入 Resource 标签 Resource 以上代码配置了数据库驱动 数据库地址 数据库用户名 密码 默 认提供的连接数 最大提供的连接数 最长等待时间等参数 2 Java 中从连接池获取连接从连接池获取连接的类 使用了单例模式单例模式 来自 GoF 提出的 设计模式 DataBaseConnectionPond javaDataBaseConnectionPond java package library util import java sql Connection import javax sql DataSource 作者 赵伯涛 public class DataBaseConnectionPond private static DataBaseConnectionPond dbcp null private DataSource ds null privateprivate DataBaseConnectionPond throws Exception javax naming Context ctx new javax naming InitialContext ds DataSource ctx lookup java comp env jdbc webdb public Connection GetConnettion throws Exception return ds getConnection 7 34 publicpublic staticstatic ConnectionConnection getConnection getConnection throws Exception Connection conn null if dbcp null Thread sleep long Math random 200 synchronized DataBaseConnectionPond class if dbcp null dbcp new DataBaseConnectionPond try conn dbcp GetConnettion catch Exception e return conn 该类在整个项目部署的过程中只实例化了一个对象 故称单例 可以 通过该类的通过该类的 staticstatic 函数函数 getConnection getConnection 获取连接获取连接 3 Dao DataDao Data AccessAccess Object Object 的模板化实现的模板化实现 使用了模板方法模式模板方法模式 来自 GoF 提出的设计模式 SqlExecute java SqlExecute java package library execute import java sql Connection import library util 作者 赵伯涛 public abstractabstract class SqlExecute public Connection conn public Object result publicpublic abstractabstract voidvoid setExecute setExecute throwsthrows Exception Exception public Object execute try conn DataBaseConnectionPond getConnection 8 34 conn setAutoCommit false setExecute setExecute mit catch Exception e try conn rollback catch Exception ee e printStackTrace finally try conn close catch Exception e return result 该类是一个抽象类抽象类 必须通过继承该类来实现具体的功能 其中的 execute execute 函数是一个模板方法函数是一个模板方法 将 try catch finaly 获取 connection 及 connection 的事务处理提取出来 具体具体 DaoDao 的功能应该写在的功能应该写在 setExecute setExecute 函数中函数中 在具体实现在具体实现 DaoDao 的功能的时候可以不用重复这些代的功能的时候可以不用重复这些代 码 方便程序员编码 也方便程序员维护程序码 方便程序员编码 也方便程序员维护程序 下面举例使用这个模板类 ReaderChangePasswordDao java ReaderChangePasswordDao java package library dao import java sql PreparedStatement import library execute SqlExecute import library model ReaderModel 作者 赵伯涛 public class ReaderChangePasswordDao extends SqlExecute private ReaderModel rm 9 34 传入 readerID password password2 旧密码 返回 影响行数 public ReaderChangePasswordDaoReaderChangePasswordDao ReaderModel rm this rm rm Override Override public void setExecute setExecute throws Exception String sql update Readers set password where readerID and password PreparedStatement ps conn prepareStatement sql ps setString 1 rm getPassword ps setInt 2 rm getReaderID ps setString 3 rm getPassword2 this result ps executeUpdate 上面的类继承了继承了 SqlExecuteSqlExecute 类类 重写了它的重写了它的 setExecute setExecute 函数函数 通过通过 构造函数传入操作时需要的参数构造函数传入操作时需要的参数 在写代码的时候可以更加专注于数据库 的操作 因为其它操作由模板类做好了 这对写一个数据库操作或许没什 么大不了的 但是一个项目里边数据库操作肯定是几十个 几百个 甚至 几千个 使用模板类减少的编码量是非常客观的 下面举例使用 ReaderChangePasswordDao 类 来自来自 UserCommonService javaUserCommonService java 的部分代码的部分代码 读者修改密码 public boolean readerChangePassword int readerID String newPassword String oldPassword ReaderModel rm new ReaderModel rm setReaderID readerID rm setPassword newPassword rm setPassword2 oldPassword ReaderChangePasswordDao rcpd new ReaderChangePasswordDao rm 10 34 int count Integer rcpd execute rcpd execute if count 0 return true else return false 注意 使用使用 DaoDao 的时候调用的应该是它的的时候调用的应该是它的 execute execute 方法方法 在抽象类中在抽象类中 4 时间显示 var cTime new Date 初始化日期 var myYear cTime getFullYear 年 var myMonth cTime getMonth 1 月 var myDate cTime getDate 日 获得时分秒 var myHour cTime getHours 时 var myMinute cTime getMinutes 分 var mySecond cTime getSeconds 秒 if myHour 10 判断如果时钟小于 10 就显示两位 前一位用 0 代替 myHour 0 myHour if myMinute 10 判断如果分钟小于 10 就显示两位 前一位用 0 代替 myMinute 0 myMinute if mySecond 10 判断如果分秒钟小于 10 就显示两位 前一位用 0 代替 mySecond 0 mySecond var time time myYear myMonth myDate myHour myMinute mySecond 格式化时间 var timer setInterval function 定义一个时钟 周期为 1 秒 var cTime new Date var myYear cTime getFullYear 支持火狐 var myMonth cTime getMonth 1 外国都是以 0 开头为一月 var myDate cTime getDate 11 34 获得时分秒 var myHour cTime getHours var myMinute cTime getMinutes var mySecond cTime getSeconds if myHour 10 myHour 0 myHour if myMinute 10 myMinute 0 myMinute if mySecond 10 mySecond 0 mySecond var cmp Ext getCmp timer time myYear myMonth myDate myHour myMinute mySecond cmp setValue time 1000 5 登录控制 登录界面 Ext onReady function Ext QuickTips init var form new Ext Panel 登录验证的 form autoTabs true activeTab 0 deferredRender false border false bodyStyle background color RGB 193 223 232 padding 0px 0px 0px 0px items xtype box width 385 height 80 autoEl tag img src icons borrowbooks jpg xtype panel 12 34 bodyStyle background color RGB 193 223 232 layout hbox items xtype panel bodyStyle background color RGB 193 223 232 border false width 120 height 150 items xtype panel layout hbox border false bodyStyle background color RGB 193 223 232 padding 10px 0px 0px 10px items xtype box width 30 height 30 autoEl tag img src icons 0 png xtype panel border false bodyStyle background color RGB 193 223 232 padding 5px 0px 0px 0px items xtype displayfield value 查阅书目 xtype panel layout hbox border false bodyStyle background color RGB 193 223 232 padding 10px 0px 0px 10px items xtype box width 30 height 30 13 34 autoEl tag img src icons 6 png xtype panel border false bodyStyle background color RGB 193 223 232 padding 5px 0px 0px 0px items xtype displayfield value 找回密码 xtype panel border false width 320 height 150 bodyStyle background color RGB 193 223 232 items xtype panel layout form border false items xtype form layout form id loginno labelWidth 30 bodyStyle background color RGB 193 223 232 padding 15px 0px 0px 0px border false defaults width 200 items xtype textfield fieldLabel 编号 allowBlank false 14 34 xtype form layout form id loginpassword labelWidth 30 bodyStyle background color RGB 193 223 232 padding 10px 0px 0px 0px border false defaults width 200 items xtype textfield fieldLabel 密码 inputType password allowBlank false function login 登录验证函数 var formNo Ext getCmp loginno var formPassword Ext getCmp loginpassword var username formNo items items 0 var password formPassword items items 0 if username getValue trim if result success location href index html loginWindow close else Ext Msg alert 提示 result msg function formPassword getForm reset params cmd login 15 34 username username getValue trim password password getValue trim scope this else Ext Msg alert 提示 编号和密码都不能为空 var loginWind
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废玻璃回收再生回收项目可行性研究报告
- 2025-2026学年人教版(2024)小学数学二年级上册期中(第1-3单元)核心知识点归纳
- 有机硅耐热漆项目可行性研究报告
- 防汛知识培训宣传
- 装饰施工工装合同
- DB65T 4119-2018 绵羊细管冷冻精液操作规程
- 消费优惠市场分析研究
- 星际尘埃对空间材料性能的影响-洞察及研究
- 窗帘制作安装合同正式版范本2篇
- 培训班租赁合同3篇
- 起重机安全应急预案
- 跨境贸易背景下非遗工艺产业的机遇与挑战
- 老年病贫血护理
- 第五单元晚清时期的内忧外患与救亡图存(单元复习课件)-高一历史(中外历史纲要上册)
- 2025年农村饮水安全项目社会稳定风险监测与评估报告
- 2025至2030中国无线电频率行业发展趋势分析与未来投资战略咨询研究报告
- 新人教版1年级上册数学全册教学课件(新版教材)
- 比亚迪汽车车间管理制度
- 《烽火岁月中的木刻》教学课件-2024-2025学年浙人美版(2024)初中美术七年级上册
- 公司外出施工管理制度
- 分析包容型领导风格对团队绩效和员工创新绩效的作用
评论
0/150
提交评论