




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 概 要 3 前 言 3 第 1 章 概 述 4 1 1 开发背景 4 1 2 JAVA 简介 4 1 3 SQL 简介 5 第 2 章 需求分析 6 2 1 系统组成 6 2 2 系统要求配置 6 第 3 章 详细设计 7 3 1 数据库设计 7 3 1 1 数据库需求分析 7 3 1 2 数据库逻辑结构设计 10 3 2 人机一体化设计 12 3 2 1 后台管理部分 12 3 2 2 前台部分 12 第 4 章 系统测试 27 4 1 数据库连接 27 4 2 检测网站运行速度 27 第 5 章 总结 30 参考文献 31 致 谢 32 概 要 随着 Internet 技术的发展 人们的日常生活已经离不开网络 未来社会人们的生活和工作将 越来越依赖于数字技术的发展 越来越数字化 网络化 电子化 虚拟化 Internet 的发展历程 以及目前的应用状况和发展趋势 可以充分地相信网络技术将极大的改变我们的生活和工作方式 甚至社会的价值观也会发生某种变化 本设计尝试用 JAVA 在网络上架构一个网上书店管理系统 以达到对网上书店的各项基本管理 本文从理论和实践两个角度出发 对一个网上书店管理系统进行设计与实现分析 关键词 网上书店 管理 JAVA 前 言 传统书店分布广泛 在市场有很多传统书店 这类书店占据了 87 以上的图书市场 由于电子 商务的迅速发展 网上书店国内目前并不少见 在 google 搜索引擎中输入 网上书店 搜索就有 8970000 项结果 但是因为信誉度的问题 只有当当 卓越少数几家网上书店真正实现全国范围的 网上售书 因此 如果顾客想通过网络购书通常只有两种选择 当当 卓越或者是本地的网上书店 而其他购书方式 这类购书方式主要以出版社和书友会邮购为主 大约占据市场份额的 7 邮购 通常是向出版社或者书友会 优点是图书种类齐全 缺点是速度慢 而且提高了购书成本 学校团 购优点是因为集体购买可能图书的价格会较低 缺点是缺少自主性 传统书店分布广泛 符合顾客 传统的消费习惯 信任度较高 但是对购买者来说需要花费很多交通以及挑选的时间 加上需要固 定店铺 成本高 图书价格较高 另外如果店铺规模较小 书籍种类不能保证 这样就促使网上书 店越来越成为可能 网上购书 具有价格低廉 高效 方便 种类齐全的特点 同时对于经营企业来说 由于不需 要店铺 从而把成本降到了最低 但是传统的网上购书网站 使用的是快递和邮递相结合的方式送 书 当顾客距离不在同一城市时 不可避免地继承了传统邮购方式的种种缺点 第 1 章 概 述 1 1 开发背景 网上商城类似于现实世界当中的商店 差别是利用电子商务的各种手段 达成从买到卖的过程的虚 拟商店 从而减少中间环节 消除运输成本和代理中间的差价 造就对普通消费 和加大市场流通 带来巨大的发展空间 尽能的还消费者以利益 带动公司发展和企业腾飞 引导国民经济稳定快速 发展 推动国内生产总值 且具有如下优势 永不关门 每天24小时 每周7天 都可以进行商品的浏览与购买 工作时间可以随时与客服 进行交流 解决购物中遇到的困难 信息量大 更多的了解 增加了您的选择空间 客户无限 全球的任何人都可以通过 Internet 访问您的商店 不受空间限制 服务优质 网上商店 不但可以完成普通商店可以进行的所有交易 同时它还可以通过多媒 体技术为用户提供更加全面的商品信息 成本低廉 由于省去了店面费用 所以总体的成本降低很多 所以表现在消费品上的价格也 会相对传统店面便宜很多 同时因为是大批量取货后分销的形式 所以价格优势比较明显 而网上书城则顾名思义 是网站式购书平台 提供高质量 更快捷 更方便的购书方式 网上 书城不仅可用于图书的在线销售 下载 也有音碟 影碟的在线销售 版权交易 图书馆的采购 团购等功能的实现 你可以在线分享你喜欢的图书 音像 图书资讯等给你的好友 而且网站式的 书城对图书的管理更加合理化 信息化 售书的同时还具有书籍类商品管理 购物车 订单管理 会员管理等功能 非常灵活的网站内容和文章管理功能 我国的网上书店虽然从数量上取得了一定的进展 但从售量而言却不尽人意 目前 国内尚无 一家在网上零售领域形成绝对领先优势的网上书店 发展比较好的寥寥无几 比较成功的有当当书 店 1 2 JAVA 简介 它最初被命名为 Oak 目标设定在家用电器等小型系统的编程语言 来解决诸如电视机 电话 闹钟 烤面包机等家用电器的控制和通讯问题 由于这些智能化家电的市场需求没有预期的高 Sun 放弃了该项计划 就在 Oak 几近失败之时 随着互联网的发展 Sun 看到了 Oak 在计算机网络 上的广阔应用前景 于是改造了 Oak 以 Java 的名称正式发布 Java 编程语言的风格十分接近 C C 语言 Java 是一个纯的面向对象的程序设计语言 它 继承了 C 语言面向对象技术的核心 Java 舍弃了 C 语言中容易引起错误的指针 以引用取代 运算符重载 operator overloading 多重继承 以接口取代 等特性 增加了垃圾回收器功能用 于回收不再被引用的对象所占据的内存空间 使得程序员不用再为内存管理而担忧 在 Java SE 1 5 版本中 Java 又引入了泛型编程 Generic Programming 类型安全的枚举 不定长参数和 自动装 拆箱等语言特性 Java 不同于一般的编译执行计算机语言和解释执行计算机语言 它首先将源代码编译成二进制 字节码 bytecode 然后依赖各种不同平台上的虚拟机来解释执行字节码 从而实现了 一次编译 到处执行 的跨平台特性 不过 每次的编译执行需要消耗一定的时间 这同时也在一定程度上降低 了 Java 程序的运行效率 但在 J2SE 1 4 2 发布后 Java 的执行速度有了大幅提升 与传统程序不同 Sun 公司在推出 Java 之际就将其作为一种开放的技术 全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容 Java 语言靠群体的力量而非公司的力量 是 Sun 公司的口号之一 并获得了广大软件开发商的认同 这与微软公司所倡导的注重精英和封 闭式的模式完全不同 Sun 公司对 Java 编程语言的解释是 Java 编程语言是个简单 面向对象 分布式 解释性 健壮 安全与系统无关 可移植 高性能 多线程和动态的语言 Java 平台是基于 Java 语言的平台 这样的平台目前非常流行 因此微软公司推出了与之竞争 的 NET 平台以及模仿 Java 的 C 语言 1 3 SQL 简介 SQL 是高级的非过程化编程语言 是沟通数据库服务器和客户端的重要工具 允许用户在高层 数据结构上工作 它不要求用户指定对数据的存放方法 也不需要用户了解具体的数据存放方式 所以 具有完全不同底层结构的不同数据库系统 可以使用相同的 SQL 语言作为数据输入与管理的 接口 它以记录集合作为操作对象 所有 SQL 语句接受集合作为输入 返回集合作为输出 这种集 合特性允许一条 SQL 语句的输出作为另一条 SQL 语句的输入 所以 SQL 语句可以嵌套 这使它具 有极大的灵活性和强大的功能 在多数情况下 在其他语言中需要一大段程序实现的功能只需要一 个 SQL 语句就可以达到目的 这也意味着用 SQL 语言可以写出非常复杂的语句 结构化查询语言 Structured Query Language 最早是 IBM 的圣约瑟研究实验室为其关系数据 库管理系统 SYSTEM R 开发的一种查询语言 它的前身是 SQUARE 语言 SQL 语言结构简洁 功 能强大 简单易学 所以自从 IBM 公司1981年推出以来 SQL 语言得到了广泛的应用 如今无论 是像 Oracle Sybase DB2 Informix SQL Server 这些大型的数据库管理系统 还是像 Visual Foxpro PowerBuilder 这些 PC 上常用的数据库开发系统 都支持 SQL 语言作为查询语言 美国国家标准局 ANSI 与国际标准化组织 ISO 已经制定了 SQL 标准 ANSI 是一个美国工 业和商业集团组织 负责开发美国的商务和通讯标准 ANSI 同时也是 ISO 和 International Electrotechnical Commission IEC 的成员之一 ANSI 发布与国际标准组织相应的美国标准 1992年 ISO 和 IEC 发布了 SQL 国际标准 称为 SQL 92 ANSI 随之发布的相应标准是 ANSI SQL 92 ANSI SQL 92有时被称为 ANSI SQL 尽管不同的关系数据库使用的 SQL 版本有一些差 异 但大多数都遵循 ANSI SQL 标准 SQL Server 使用 ANSI SQL 92的扩展集 称为 T SQL 其 遵循 ANSI 制定的 SQL 92标准 SQL 语言包含3个部分 数据定义语言 Data Definition Language DDL 定义 definition 例如 CREATE DROP ALTER 等语句 数据操作语言 Data Manipulation Language DML 操作 make 例如 INSERT 插入 UPDATE 修改 DELETE 删除 语句 数据控制语言 Data Controlling Language DCL 控制 control 例如 GRANT REVOKE COMMIT ROLLBACK 等语句 SQL 语言包括三种主要程序设计语言类别的语句 数据定义语言 DDL 数据操作语言 DML 及数据控制语言 DCL SQL 是用于访问和处理数据库的标准的计算机语言 第 2 章需求分析 2 1 在 Windows 平台下配置 JSP 运行环境 为了使系统能够正常运行 JSP 和相关程序 必须先配置好能够使用 JSP 的 WEB 服务 器 各种能使用 Servlet 技术的 WEB 服务器中 运用得最多的是 Tomcat 服务器 如果 仅是为了用于测试程序 Tomcat 的配置则显得太复杂了 本文推荐使用 Resin 服务器 Resin 据称是最快的 Servlet 运行平台 不过限于单站点 对传统的一些网关支持不是 很好 因此对于商业网站而言 不是最好的选择 不过如果仅是为了测试 Servlet 这 个 Resin 的安装可谓有点傻瓜化 Resin 比较新的版本是 3 x 但目前实际用的 2 x 版本的比较多 Resin 可到官方站 点下载 2 1 13 版本 文件位置 如果你的电脑上已装好 JDK 直接把下载的 resin 包解压到 D 盘根目录解压后即 D resin 2 1 13 为服务器的目录 把本文的源程序 jspweb 文件夹也放在 D 盘根目录 即是 D jspweb 为网站根目录 打开 D resin 2 1 13 conf resin conf 是一份 XML 形式的配置文件 找到 doc 这里改为 D jspweb 然后运行 D resin 2 1 13 bin httpd exe 在浏览器输入 http localhost 8080 j1 jsp 看到了 我是 JSP 的字样了吧 你的 Servlet 服务器就这样配置成功了 为了能编译 Servlet 类 还需要做的事情是 把 D resin 2 1 13 lib 加入到 windows 的 CLASSPATH 的环境变量 中 2 2 JSP ASP 和 PHP 技术之比较 JSP 与 ASP PHP 技术都是目前网上最流行的在服务器端运行的脚本技术 JSP 能用 JavaBeans 技术封装 达到商业逻辑的目的 ASP 对应之的是 COM 组件 因此两者都能 用于开发商业逻辑 PHP 则更像于一个纯脚本 仅适合于普通的网站开发 而不能用作 商业逻辑而被冠以 Person Home Page 的名称 这是最贴切不过的了 JSP 与 ASP 相比 JSP 具有跨平台 安全 强大的可伸缩性的特点 而果硬要挑一 些毛病 JSP 相对别的脚本更加难掌握 因为精通 JSP 必须精通 Java 语言 对于中小型 项目 我们要考虑开发人员 开发速度 开发成本等问题 在这方面 ASP 和 PHP 会比 JSP 更容易胜出 值得一提的是 ASP 的最新版本 ASP NET 与原来的 ASP 性质完全是不同的 它和 JSP 一样 都是一种编译性的脚本 本身完全与强大的 Net 框架结合 完美的支持 Xml 的各种应用 与昔日的 ASP 不可同日而语 但是无论是 ASP 还是 ASP NET 它都摆脱不 了 Windows 平台本身 这是 ASP 一个致命的缺点 2 3 JSP 语法基础 2 3 1 嵌入了 JAVA 语言的 HTML 文件 把下面网页保存为 j1 jsp 这就成了一个最简单的 JSP 页面了 其中 是声明输出的文件类型为 text html 字符编码是 gb2312 在 JSP 中里的内容表示 的是 JSP 编译时的一些选项或向客户端发送的头信息的 JSP 指令 里的内容就是 Java 语言 如果有必要 更改适当设定 还可以使用 javascript 作为脚本 不过实际应用 中很少有人这样做 2 3 2 request out 获得一个会话的值 session getValue 名称 2 3 4 JSP 其它基本内置对象 JSP 有九大内置对象 除了上述四种以外 还包括 pageContext 网页的属性是在这里管理 application Servlet 正在执行的内容 config Servlet 的构架部件 page JSP 网页本身 exception 针对错误网页 未捕捉的例外 这些基本的内置对象是构成 JSP 页面的重要因子 第 3 章 详细设计 本系统采用三层架构设计 它的工作原理如图 3 1 所示 图 3 1 三层架构模型 采用三层构架以后 用户界面层通过统一的接口向业务层发送请求 业务层按自己 的逻辑规则将请求处理之后进行数据库操作 然后将数据库返回的数据封装成类的形式 订购 用户 订单列表订单 图书 返回给用户界面层 3 1 数据库设计 数据库在一个信息管理系统中占有非常重要的地位 数据库结构设计的好坏将直接 对应用系统的效率 以及实现的效果产生影响 合理的数据库结构设计可以提高数据存 储的效率 保证数据的完整和一致 3 1 1 数据库需求分析 针对一般在线书店的需求 得出如下需求信息 用户分为游客和已注册用户 订单分为单张详细订单和总订单 一个用户可以购买多本图书 一个用户对应一张订单 一个列表对应多张订单 针对本系统功能分析 总结出如下的需求信息 用户 包括数据项 用户 ID 用户名 密码 图书 包括数据项 图书编号 图书名 价格 图书介绍 订单列表 包括数据项 订单编号 图书编号 购书数量 订单 包括数据项 订单编号 用户编号 下单时间 从本系统中规划出的实体有 用户实体 图书实体 订单实体 订单列表实体 实体之间关系的 E R 图如图 3 5 所示 1 1N N 图 3 5 实体关系 E R 图 用户信息实体的 E R 图如图 3 6 所示 图书实体的 E R 图如图 3 7 所示 订单实体的 E R 图如图 3 8 所示 订单列表实体的 E R 图如图 3 9 所示 图书 图书编号 图书名称分类编号 封面 图 3 6 图书实体 E R 图 用户 用户名 密码用户编号 E mail 图 3 7 用户实体 E R 图 订单 订单编号 用户编号图书编号 订购数量 图 3 8 订单实体 E R 图 订单列表 订单号 用户编号图书编号 是否付款 图 3 9 订单列表实体 E R 图 3 1 2 数据库逻辑结构设计 在线书店数据库中各个表的设计结果如下面的标和所示 表 3 1 为图书信息列表 book 表 3 1 图书信息表 book 字段名数据类型长度允许空说明 IDint4自动编号 主键 booknameint4书名 bookclassvarchar255图书类别 authorvarchar100yes图书作者 publishfloat8yes出版社 bookNovarchar100yes书号 Contenttext16yes内容介绍 pricetinyint1yes价格 Amountint4yes总数量 Leav numberint4yes库存量 pictureint4yes封面 reg timedatetime8yes入库时间 表 3 2 为用户信息列表 shop user 表 3 2 用户信息表 shop user 字段名数据类型长度允许空说明 IDint4自动编号 会员编号 usernamevarchar4no用户名 passwordvarchar100no密码 Namesint4yes会员级别 Sexvarchar50yes名字 Addrvarchar50yes地址 Phonevarchar25yes电话 Postvarchar25yes邮编 Emailvarchar25yes邮箱 Retimedatetime8yes注册时间 RegIpAddrvarchar20yes注册 ip 表 3 3 为订单表 记录订单信息 orders 表 3 3 订单信息表 orders 字段名数据类型长度允许空说明 IDint4yes自动编号 订单编号 order idint4yes会员编号 user idint4yes图书编号 quantityint4yes订购数量 submit timedatetime8yes提交订单时间 consignmentTimedatetime8yes交货时间 totalpricefloat8yes总价 contentvarchar20yes备注 ipAddrvarchar20yes用户 ip isPayoffint11yes是否付款 isSaleint11yes是否发货 表 3 4 为订单列表 记录订单列表信息 allorder 表 3 4 订单列表 allorder 字段名数据类型长度允许空说明 IDint4自动编号 卡类型编号 orderIDint11yes订单号 BookNoint11yes书号 Amountint11yes数量 表 3 5 书店管理员信息表 记录管理员信息 bookadmin 表 3 5 管理员信息表 bookadmin 字段名数据类型长度允许空说明 AdminUservarchar20管理员用户名 AdminPassvarchar50 yes管理员密码 表 3 6 图书分类信息表 记录图书分类信息 bookclass 表 3 6 图书分类表 bookclass 字段名数据类型长度允许空说明 IDint4自动编号 卡类型编号 Classnamevarchar30yes图书类别 第 4 章 详细设计 4 1 系统概述 4 1 1 用户界面部分 图书选购 可按分类查找图书 或者通过关键字进行查询 购物车功能 查看图书详细信息 用户注册 用户登录 查看用户的订单信息 修改用户个人信息 4 1 2 管理界面部分 现有图书管理 修改 删除 查看 用户管理 查看 修改 删除 订单管理 查看订单清单 更新订单付款 出货状态 删除订单 添加新图书 添加图书分类 4 2 详细代码及说明 4 2 1 实现 bookshop run 包 1 login java1 login java 这是一个以客户为中心的交易平台 只有成为了系统的合法用户才能够使用这 个系统 因此需要检验每个用户的合法性 管理用户登录的 login java 正是要完成 这样的功能 类中定义了个 private 属性和他们对应的 setX getX 方法和默认构造函数和 execute getSql 操作 private 属性分别是 private String username 登录用户名 private String passwd 登录密码 private boolean isadmin 是否管理员登录 private long userid 0 用户 ID 号 重要操作 主要介绍 execute execute 操作 功能 从数据库中查询用户信息 返回值 boolean 型 如果取值成功返回 true 否则 返回 false 设计思路 获得数据库连接对象 Connection 对象 ResultSet 对象和 Statement 对象 调用 getSql 方法获得 sql 语句 执行 sql 语 句 程序主干部分代码 public boolean execute throws Exception try con DataBase getConnection stmt con createStatement rs stmt executeQuery getSql catch Exception e e printStackTrace while rs next if isadmin userid rs getLong id flag true 2 op book java 该类主要负责图书的管理 包括图书的修改 查询 删除和添加等 op book 类有以下属性 private book abooks new book 新的图书类 private javax servlet http HttpServletRequest request 建立页面请求 private boolean sqlflag true 对接收到的数据 是否正确 private Vector booklist 显示图书列表向量数 组 private int page 1 显示的页码 private int pageSize 5 每页显示的图书数 private int pageCount 0 页面总数 private long recordCount 0 查询的记录 总数 public String sqlStr op book 类有以下方法 省去了属性对应的 getX setX 方法 book search 完成图书查询 包括分类 关键字查询 delete 负责图书的删除 getOnebook 主要完成图书的单本查询 用于支持页面的 查看 详细信息 insert 负责图书的添加 to String 把字符串以 ISO 8859 1 编码形式输出 使页面 正常显示 update 负责修改图书信息 getRequest 负责接受页面传递过来的参数 分解并将参数存放 到 abooks 对象中 重要操作 主要介绍 getRequest getRequest 方法 功能 负责从页面接受表单数据并分解 设置 abooks 对象相应属性 参数设计 页面传递的 Request 对象 其中包括表单数据 返回值 boolean 型 true 表示成功 否则返回 false 设计思想 获取页面传递的 Request 对象 分解 Request 对象 获取表单参数值 把参数值设置成图书对象 abooks 相对应的属性值 程序主干代码 public boolean getRequest javax servlet http HttpServletRequest newrequest request newrequest String BookName request getParameter BookName abooks setBookName to String BookName String author request getParameter author abooks setAuthor to String author String publish request getParameter publish abooks setPublish to String publish String bookclass request getParameter bookclass abooks setBookClass bc String bookno request getParameter bookno abooks setBookNo to String bookno String picture request getParameter picture abooks setPicture to String picture price new Float request getParameter price floatValue abooks setPrice price amount new Integer request getParameter amount intValue abooks setAmount amount String Content request getParameter Content abooks setContent to String Content 3 op user java 为了使用上的方便 我们把对用户的管理 包括用户的添加 删除 修改 查 询等集合成一个管理类 该类具有以下属性 private user user new user 新的 用户对象 private javax servlet http HttpServletRequest request 建立页 面请求 private Vector userlist 显示用户列表向量数组 private int page 1 显示的页码 private int pageSize 8 每页显示的图书数 private int pageCount 0 页面总数 private long recordCount 0 查询的记录总数 private String message 出错信息提示 private String username 注册后返回的用户名 private long userid 0 注册后返回的用户 ID 该类具有的主要方法 省去了属性相关的 getX setX 操作 add 负责用户的添加 delete 负责删除指定 ID 的用户 get alluser 取出书店所有用户的信息 getGbk 返回指定字符串的 GBK 编码 getUserinfo 负责取得用户的详细信息 update 负责修改用户资料 getRequest 获取表单数据 并分解存储 4 op buy java 我们把业务逻辑和对订单以及和订单列表的管理集成到了该类当中 该类具有以下属性 private javax servlet http HttpServletRequest request 建立页面请求 private HttpSession session 页面的session private boolean sqlflag true 对接收到的数据是否正确 private Vector purchaselist 显示图书列表向量数组 private Vector allorder 订购单列表 private Vector order list 订单清单列表 private int booknumber 0 购书总数量 private float all price 0 购书总价钱 private boolean isEmpty false 库中的书数量是否够购买的数 private int leaveBook 0 库存数量 private String orderId 用户订单号 private boolean isLogin true 用户是否登录 private int page 1 显示的页码 private int pageSize 15 每页显示的订单数 private int pageCount 0 页面总数 private long recordCount 0 查询的记录总数 该类的主要操作 省去了属性相关的 getX setX 操作 addnew 负责向购物车中添加新购买的图书 delete 负责从数据库中删除指定ID的订单 modiShoper 负责修改购物车中已选的图书 delShoper 负责删除购物车中的物品 getAllorder 负责从数据库中的订单列表中查询指定用户的订单列表 getGbk 获得指定字符串的GBK编码 getOrder 获得单个订单对象 payout 提交购物车 把订单插入到数据库中 update 该方法负责当用户付款后 把数据中对应订单的是否付款标记修改成已付 状态 重要操作 主要介绍addnew addnew 方法 功能 负责向购物车中添加一条新记录 参数设计 页面传递的 request 对象 返回值 boolean 类型 成功返回 true 否则返回 false 设计思路 从页面获得表单数据 request 对象中 获得图书编号等参数值 判断购买数量是否合法 如果是可以操作 否则不能操作 判断是否第一次购买 如果是第一次购买 按第一次购买操作 否则查询购买列表 找是否有相应项 有则 直接修改数量 否则添加新记录 函数代码 public boolean addnew HttpServletRequest newrequest throws Exception request newrequest String ID request getParameter bookid String Amount request getParameter amount long bookid 0 int amount 0 try bookid Long parseLong ID amount Integer parseInt Amount catch Exception e return false if amount rs getInt 1 leaveBook rs getInt 1 isEmpty true return false DataBase closeResultSet rs DataBase closeStatement stmt DataBase closeConnection con catch SQLException e return false allorder iList new allorder iList setBookNo bookid iList setAmount amount boolean match false 是否购买过该图书 if purchaselist null 第一次购买 purchaselist new Vector purchaselist addElement iList else 不是第一次购买 for int i 0 i purchaselist size i allorder itList allorder purchaselist elementAt i if iList getBookNo itList getBookNo itList setAmount itList getAmount iList getAmount purchaselist setElementAt itList i match true break if name matches结束 for循环结束 if match purchaselist addElement iList session setAttribute shopcar purchaselist return true 4 2 2客户界面设计与实现 1 界面头和界面尾设计 为了提高代码的重用性 我把客户界面部分相同的头和尾作成两个独立的块 分 别命名为 head inc 和 tail inc 这两个文件是单纯的 html 代码 在 jsp 页面中只要 通过以下语句就可以实现对两个文件的调用 他们的效果如下图 4 1 图 4 1 界面头和尾部分显示效果 用户登录界面 login jsp 代码如下 2 用户登录模块的设计 为了检验用户是否合法 所以需要输入用户名和密码来验证用户的合法性 用户登 录模块刚好完成这样的一个功能 该模块需要用到 login java 见 4 4 3 1 这个 bean 需要设计一个表单让用户输入信息 效果图如下 图 4 2 图 4 2 用户登录界面 3 在线购书功能模块设计 在该模块用户可以看见书店现有的样子 用户可以查找书通过分类 关键字查找 户可以购买图书 页可以查看图书的详细资料 还可以跳转到其他的模块 例如查看 购物车 查看订单信息等 在这个模块中我们要用到 JavaBean 有 bookshop book book bookshop run op book bookshop run op bookclass 三个 JavaBean 对于他们的介绍我已经在前面介绍了这里就不在一一罗列了 详情见 4 2 和 4 3 其中我把导航条抽出来单独作为一个模块 sub inc 左边的查找框也单独设计成一 个模块 left inc 两个纯粹的 html 代码部分 在 jsp 页面中直接调用 效果如下图 4 3 所示 图 4 3 在线购书模块效果显示 在线购书页面模块 booklist jsp 代码如下 4 购物车模块页面设计 在购物车这个模块当中用户可以修改购买数量 可以删除已选图书 可以提交购物车 也可以清空购物车 同时也可以继续购书 在这个模块中我们用到了 bookshop run op book bookshop run op bookclass bookshop run op buy 三个 JavaBean 关 于他们的介绍在前面已经罗列出来了这里就不在一一说明了 该模块运行时效果如图 4 4 所 示 图 4 4 购物车模块显示效果 页面核心代码如下 shopcar jsp String userid String session getAttribute userid if userid null userid String modi request getParameter modi String del request getParameter del String payoutCar request getParameter payout String clearCar request getParameter clear String mesg if modi null else mesg 修改购买数量出错 else mesg 修改成功 else if del null else if payoutCar null session removeAttribute shopcar else if shop getIsLogin mesg 你还没有登录 请先登录后再提交 else mesg 对不起 提交出错 请稍后重试 shop payout 出错 else if clearCar null mesg 购物车中的物品清单已清空 5 其他页面显示效果图 图 4 5 订单页面显示效果 订单页面我们可以看到自己已经提交的所有订单 可以查看订单的状态和详细情况 并 色环境以弹出窗口的形式显示订单信息 这种功能主要是通过 javascript 脚本语言实现的 如 function openScript url name width height var Win window open url name width width height height resizable 1 scrollbars yes menubar no status yes function checklogin if document payout userid value alert 你还没有登录 请登录后再提交购物清单 return false return true function check if document change amount value 1 alert 你的购买数量有问题 document change amount focus return false return true 第 5 章 系统测试 5 1 数据库连接 在系统的整个开发工程中 我们最容易碰到的难题是数据库连接这个模块 在 JavaBean 中连接数据库注意的一些事项有 1 首先要下载 Microsoft SQL Server 2000 Driver for JDBC 这个包 并安装 2 把 Microsoft SQL Server 2000 Driver for JDBC 的 lib 文件夹下的 msbase jar mssqlserver jar msutil jar 三个文件拷贝到 Tomcat 安装目录下的 commen lib 文件夹下 3 把 msbase jar mssqlserver jar msutil jar 三个文件的路径添加到 CLASSPATH 中 4 如果使用的操作系统是 Windows xp 在安装 SQL Server2000 后必须下载 SP3 补丁并安装 否则打不开 1433 端口号 在数据库连接中出现问题将会出现异常提示信息 org apache jasper JasperException org apache jasper servlet JspServletWrapper service JspServletWrappe r java 372 org apache jasper servlet JspServlet serviceJspFile JspServlet java 292 org apache jasper servlet JspServlet service JspServlet java 236 javax servlet http HttpServlet service HttpServlet java 802 root cause java lang NullPointerException bookshop run login execute login java 83 org apache jsp bookshop admin adm 005flogin jsp jspService adm 005f login jsp java 72 org apache jasper runtime HttpJspBase service HttpJspBase java 94 javax servlet http HttpServlet service HttpServlet java 802 org apache jasper servlet JspServletWrapper service JspServletWrappe r java 324 org apache jasper servlet JspServlet serviceJspFile JspServlet java 292 org apache jasper servlet JspServlet service JspServlet java 236 javax servlet http HttpServlet service HttpServlet java 802 如图 5 1 所示 图 5 1 数据库连接异常 这个时候可能出现的问题是数据库服务器没有开启 或者是没有安装 Microsoft SQL Server 2000 Driver for JDBC 这个包 5 2 检测网站运行速度 一 用 Ajax 提高用户体验 由于我的网站上链接字体的大小是根据点击次数决定 所以每次点击都要提交到服 务器端并记录次数 再在客户端打开网站链接 这在 localhost 测试的时候没有发现问 题 但是部署到服务器上 会感到明显的等待 解决办法就是用 Ajax 用户点击网站链 接后就直接打开 再通过 Ajax 将点击的事件提交到服务器端记录 这样用户感觉不到 任何延时 二 将逻辑移到客户端的 javascript 中 在开始的时候 网站标签高亮 和 手气不错 的功能都是提交到服务器端操作 然后返回结果的 后来 我发现其实很多逻辑是可以移到客户端 由 javascript 来实 现的 Javascript 非常强大 可以完成很多复杂的逻辑 将逻辑移到客户端的 javascript 中 可以很有效的减少和服务器通讯的次数 获得更好的访问速度 三 解决进程的 由于采用的是 fastCGI 的方式 我配置了 django fcgi 可是 我发现系统进程中 有大量的 django fcgi 进程被标记为 失去功能 这些进程会导致服务器 有时无法正常访问 我开始尝试用命令来 kill 掉这些进程 但是很快发现这无法从根 本上解决问题 后来 我看到一个老外在 blog 上提到一个解决方案 将 django fcgi 改名为 dispatch fcgi 原来 dispatch fcgi 是一个 dreamhost 的系统进程 它的健 壮性是可以得到保障的 果然 我将 django fc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色产业项目方案招标
- 阜外医院石丽的课件
- 稀有金属矿资源开发与选矿成本效益评价-洞察及研究
- 国际标准制定中天南星道地性评价体系的构建与知识产权保护机制创新-国际药学法规与知识产权交叉研究
- 反向扭矩突变工况下密封结构动态应力分布仿真建模
- 2025年度甘肃省武威市专业技术人员继续教育公需科目试卷及答案
- 2025年电力考试国家电网安规考试模拟试题及答案
- 跨境执法技术合作-洞察及研究
- 客户服务热线快速响应问题表
- 2025年度合同履行企业拟奖励清单
- 输液并发症静脉炎课件
- 综艺脱口秀节目创意策划及实施方案
- 浪浪山小妖怪-2025~2026学年美术开学第一课《浪浪山小妖怪》
- (2025年标准)盆景购销协议书
- 设计合同结算协议书范本
- 2025广东湛江市廉江市政协办公室等7个单位招聘政府雇员9人笔试参考题库附答案解析
- (2025年标准)婚后债务分离协议书
- 2025秋冀人版(2024)科学二年级上册教学计划、教学设计(附目录)
- (高清版)DBJ∕T 13-91-2025 《福建省房屋市政工程安全风险分级管控与隐患排查治理标准》
- 媒体发稿推广合作协议模版
- 四年级上册数学 线段、直线、射线、角(同步练习)人教版 (无答案)
评论
0/150
提交评论