已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于基于 B S 模式的网上书城系统毕业论文模式的网上书城系统毕业论文 目录 第 1 章 绪论 1 1 1 研究背景 1 1 2 研究目标 2 第 2 章 系统概述 3 2 1 软硬件环境 3 2 1 1 硬件环境要求 3 2 1 2 软件要求 3 2 1 3 软件安装 3 2 2 关键技术 3 2 2 1 Java 3 2 2 2 Servlet JSP 和 JavaBeans 4 2 2 3 Struts2 4 2 2 4 Hibernate 5 2 2 4 Spring 6 2 2 5 Lucene 6 2 2 6 Compass 6 2 2 7 Velocity 6 2 2 8 JavaMail 7 2 2 9 OSCache 7 2 3 开发工具简介 8 2 3 1 开发软件 MyEclipse9 简介 8 2 3 2 JDK1 6 简介 10 第 3 章 系统需求分析 11 3 1 系统开发策略 11 3 2 系统需求 11 3 3 功能需求 12 3 4 可靠性要求 13 3 5 系统流程图 13 第 4 章 数据库设计 15 4 1 数据库的概要设计 15 4 2 数据库的逻辑设计 16 第 5 章 代码设计与实现 19 5 1 主页显示 19 5 2 商品分类展示 21 5 3 商品详细页展示 24 5 4 购物车管理 25 IV 5 5 订单生成 26 5 6 我的账户 29 5 7 注册 登录 30 5 8 找回密码 32 5 9 商品搜索功能 35 5 10 后台产品管理模块 37 5 11 订单管理模块 38 5 12 用户管理模块 39 5 13 员工管理模块 40 第 6 章 系统测试 42 6 1 系统测试的目标 42 6 2 测试实现 42 6 2 1 模块测试 42 6 2 2 测试内容 42 第 7 章 系统评价与改进 45 7 1 系统的优点 45 7 2 系统的缺点 45 7 3 系统改进的方向 45 结束语 46 致谢 47 参考文献 48 附录 部分代码 49 江西理工大学应用科学学院毕业设计 1 第 1 章 绪论 1 1 研究背景 近年来 随着计算机技术在互联网等平台上的迅速崛起 计算机正在渐渐地改变着 人们的日常生活方式 而互联网技术已经日益成为提供和收集信息的最佳渠道 并且已 经开始进入传统的流通领域 所以电子商务飞速地开始流行起来 越来越多的商家在网 上建起了自己的在线商店 让消费者体会到一种新颖的购物理念 作为一种较新型的销 售产业 网上商店的许多销售方式也已经被我们大多数人所接受 网上购物系统是具有 交互功能的一种商业信息系统 一般它会向用户提供静态和动态两种信息资源 所谓的 静态信息就是指那些不怎么经常变动或者更新的资源 网上购物系统需要具有很强的交 互功能 可以使得商家和用户方便的传递信息 完成电子贸易 这种全新的交易方式能 够实现公司间文档与资金的无纸化交换 网上购物模式作为一种较为新兴的商业模式 得到了越来越多人的认可 对于新鲜 的事物人们总是会抱着先尝尝看的态度 如果有甜头的话就会给自己带来另外一种享受 生活的新鲜感 那么它就是成功的 互联网的下一浪 也许正是因为它能改变人们的生 活而越来越受到关注 也正因为如此 网上购物的浪潮也已经被彻底激活 在互联网的世界里 网上购物系统将成为人们足不出户的网上超市 网上商城也为 人们提供了更广阔的购物环境 人们可以不受时间的限制 不受空间的限制 解决了传 统购物时的诸多不便 可以让消费者随时随地在网上进行购物 拥有更广阔的市场 在 网上这个世界将会变得很小 一个商家面对的是全球的消费者 而一个消费者也可以在 全球的任何一家商家里进行购物 拥有更快速的流通和低廉的价格 电子商务减少了商 品流通的中间环节 节省了大量的开支 自然也会降低商品流通和交易的成本 更加符 合时代的要求 如今的人们都追求时尚 讲究个性 注重购物的环境 网上购物 更能 体现个性化的购物过程 随着互联网的高速发展 新一轮网络热潮的开始 网络技术开 始 无孔不入 在经济领域也是在尽情施展 在这样的一个大环境里 网上购物系统蓬勃 的发展起来 制作这样的一个系统 目的在于给广大消费者提供一个方便 快捷 周到 的购物环境和丰富的信息资源 促进信息的交流 减少用户出门购物的不便 但是当今互联网技术的要求也越来越高 用户已经不满足于只是简单地浏览一下网 页 收发电子邮件 要求高效率工作的我们开始追求足不出户的利用互联网这一强大的 平台来实现的网上购物系统 对于企业无论是企业与企业之间 还是企业和客户之间的 交易 如果能够实现网上交易 那么这将大大提高交易速度 节约交易成本 而网上购 物也伴随着网络数据库技术的进一步发展 使得这一设想已经成为了现实 网上调查结果显示 书刊 依然是用户在网上购买最多的商品之一 58 7 的用户过 去一年内在网上购买过书刊 当问及用户希望网络能更多的提供哪些种类的产品时 书 刊 也已 51 5 的比例高居排行榜榜首 电脑相关产品 教育学习服务 音像器材 及制品 通讯类 等产品也获得不错的期望 根据用户期待购买的商品种类和实际购买 的可以看出 价格相对较低的图书 音像 软件 鲜花礼品 通讯产品 生活家居品 教育学习服务及票务服务等商品对于网民而言具有更大的吸引力 成为网上消费的主要 热点 而购买价格相对较高的大型家电 电子产品以及伴随着休闲行为的服装产品则相 对冷清 所以可以预见图书仍然将会是未来几年内网上消费的主要热点 由此可见 网 上书店有着很大的市场 该网上购物系统主要以图书为主题 重点为那些爱书者提供一个很好的购物平台 罗宏 基于 B S 模式的网上书城系统 2 1 2 研究目标 随着全球经济一体化的逐步发展和深入 网上购物已经成为不可少的经营策略之一 本选题的目标是开发设计一个基于 B S 的网上书城系统 目的在于设计一套都可以在互 联网上进行电子商务的高效运作系统 同时 也检验学生的在校所学和进一步提高学生 综合应用能力 要求和内容 在系统的实现流程上用户先注册 新用户 或登陆 老用 户 再按照分类导航 选书 购书 最后完成订单 在整个过程中 用户可随时查 询购物车和订单状况 管理员可以在后台查看产品和订单情况 了解用户情况 江西理工大学应用科学学院毕业设计 3 第 2 章 系统概述 2 1 软硬件环境 2 1 1 硬件环境要求 计算机必须满足的条件 1 CPU Intel Pentium 166MHz 或更高的处理器 2 操作系统 Microsoft Windows7 Microsoft Windows XP 3 监视器 Microsoft Windows 支持的 VGA 或分辨率更高的监视器 4 内存 2GB 内存以上 2 1 2 软件要求 本系统适用于 Microsoft Windows7 下开发的 所采用的开发工具是 MyEclipse 9 推荐桌面显示方式 1024 768 像素 2 1 3 软件安装 1 在系统上安装 MyEclipse 9 2 在系统上安装 JDK1 6 3 在系统上安装 MYSQL 4 在系统上安装 Tomcat 7 2 2 关键技术 2 2 1 Java Java 是一种基于网络计算的开发语言 基于 Java 开发的应用程序是基于 WEB 的 另外由于 Java 的平台无关性 使得应用程序可以运行在不同硬件平台 不同操作系统平 台上 1 因此 Java 自诞生以来 受到了各软 硬件厂商的广泛支持 最近 各大型数据 库厂商纷纷宣布他们的产品能更好地支持 INTERNET 支持 Java 并且很多应用软件厂商 纷纷推出了采用 Java 开发的应用程序 随着 INTERNET 的迅速发展 应用软件的开发工 具转向 Java 是一种必然的趋势 它代表着未来软件开发技术的潮流 Java 的良好表现证 明它是一种成熟的 可靠的开发语言 Java 拥有众多优点 具体体现在以下几个方面 1 灵活性 Java 非常灵活 足以支持部署和开发环境中的各种变化 由于 Java 是在面向对象的 基础平台上构建的 因此可以很容易对基本的语言进行扩展和发布 2 厂商的广泛支持 采用 Java 有一个非常引人注目的原因 就是受到了厂商的广泛支持 Java 不像其他 技术一样只有一个主要的供应商 而是有数百个公司都生产或支持 Java 产品 Oracle 公 司是 Java 业界的一个巨头 它继续对客户提供引导 对 Java 应用程序的开发提供产品支 持 这种支持 Java 的公司有很多 因此选择 Java 语言非常牢靠 不会因为选择它作为开 发语言而将自己紧紧和一个厂商捆绑在一起 罗宏 基于 B S 模式的网上书城系统 4 3 用户的广泛支持 Java 具有很好的用户基础 它们并不局限于一个特定的公司 在 Internet 上 有很多 资源都可以获得 Java 示例代码 另外 Java 程序员还可以使用很多免费软件或共享软件 和很多应用程序代码 4 平台独立性 Java 源代码和运行时文件并不局限于某一个操作系统 因此 在 Windows 环境中创 建并编译 Java 类文件 无需任何修改就可以将相同的文件部署到 UNIX 环境中 Java 的 这种特性 也称为可移植性 这一点对于那些发现自己的业务增长需要一个特定的操作 系统 又需要支持原操作系统的企业来说非常重要 2 2 2 Servlet JSP 和 JavaBeans Servlet 可称为小服务程序 许多 Web 服务器都支持 Servlet 不支持 Servlet 的 Web 服务器也可以通过附加的应用服务器 2 和模块来支持 Servlet 由于 Java 的跨平台的特性 Servlet 也是平台无关的 Java Servlet 内部是以线程方式提供服务 不必对于每个请求都 启动一个进程 并且利用多线程机制可以同时为多个请求服务 因此 Java Servlet 效率非 常高 Java Servlet 是利用输出 HTML 语句来实现动态网页的 如果用 Java Servlet 来开发 整个网站 动态部分和静态部分的整合过程就很困难 为此 SUN 推出了 JSP JSP Java Server Pages 是用于构建包含动态 Web 内容 HTML DHTML XHTML 以及 XML 等 的应用系统的一种 Java 技术 JSP 使得进行复杂动态 Web 页的开发变得简单 灵活而高效 JavaServlet 是 JSP 技术的基础 大型的 Web 应用程序的开发需要 JAVA Servlet 和 JSP 配合才能完成 JSP 页是包含了 JSP 元素的 HTML 或 XML 页 JSP 元素由 JSP 标准来定界 其中一些标注具有标准的 XML Namespaces 语法 其它一些具有 JSP 专 用的语法 JavaBeans 就是 Java 的可重用组件技术 3 ASP 通过 COM 来扩充复杂的功能 如文 件上传 发送 E Mail 以及将业务处理或复杂计算分离出来成为独立可重复利用的模块 JSP 通过 JavaBeans 实现了同样的功能扩充 JavaBeans 组件可以用来执行复杂的计算任务 或负责与数据库的交互以及数据提取等 JSP 语法虽很简洁 但从整个系统设计的角度出发 使用 JSP 需要一种层次化的思想 一种成熟的思想是采用使内容和显示逻辑分开的技术 这种技术的典型是 J2EE 架构 这 一架构中 JSP 仅仅扮演页面展示的角色 商业逻辑 数据逻辑则被封装在 EJB Enterprise JavaBeans 中 J2EE 平台提供了一个基于组件的方法来设计 开发 装配 及部署企业应用程序 J2EE 架构非常可靠 但 EJB 的设计和使用过于复杂 有时我们仅仅需要一种使内容 和显示逻辑分开的简单方式 JavaBeans 与 JSP 的结合便能胜任这一要求 4 2 2 3 Struts2 Struts2 是目前世界上应用最广泛的 MVC 框架 5 它是一个基于 MVC 的框架 其设 计思想和可信架构与 WebWork 是完全一致的 同时它又吸纳了 Struts1 的诸多优点 比 起 struts1 具有的特征有 Action 类 线程模式 对 Servlet 的依赖性 获取用户输入的方 式 表达语言 向视图传递数据的方式不同 类型转换 输入合法性的验证 Action 执行 的控制上都做了很大的提高 使得 Struts2 更加灵活 稳定 MVC 即 Model View Controller 的缩写 是一种常用的设计模式 MVC 减弱了业务 逻辑接口和数据接口之间的耦合 以及让视图层更富于变化 Struts 是 MVC 的一种实现 江西理工大学应用科学学院毕业设计 5 它将 Servlet 和 JSP 标记 属于 J2EE 规范 用作实现的一部分 Struts 继承了 MVC 的各 项特性 并根据 J2EE 的特点 做了相应的变化与扩展 Struts 的工作原理 如图 2 1 MVC 模型所示 图 2 1 MVC 模型 Struts2 的体系与 Struts1 体系的差别非常大 因为 Struts2 使用了 WebWork 的设计核 心 而不是 Struts1 的设计核心 Struts2 中大量使用拦截器来处理用户的请求 从而允许 用户的业务逻辑控制器与 Servlet API 分离 MVC 是一个设计模式 它强制性的使应用程 序的输入 处理和输出分开 使用 MVC 应用程序被分成三个核心部件 模型 视图 控 制器 它们各自处理自己的任务 6 大部分 Web 应用程序都是用像 ASP PHP 或者 CFML 这样的过程化语言来创建的 它们将像数据库查询语句这样的数据层代码和像 HTML 这样的表示层代码混在一起 经验比较丰富的开发者会将数据从表示层分离开来 但这通常不是很容易做到的 它需要精心的计划和不断的尝试 MVC 从根本上强制性的 将它们分开 尽管构造 MVC 应用程序需要一些额外的工作 但是它给我们带来的好处是 无庸质疑的 首先 最重要的一点是多个视图能共享一个模型 正如我所提及的 现在需要用越 来越多的方式来访问你的应用程序 对此 其中一个解决之道是使用 MVC 无论你的用 户想要 Flash 界面或是 WAP 界面 用一个模型就能处理它们 由于你已经将数据和业务 规则从表示层分开 所以你可以最大化的重用你的代码了 由于模型返回的数据没有进行格式化 所以同样的构件能被不同界面使用 例如 很多数据可能用 HTML 来表示 但是它们也有可能要用 Macromedia Flash 和 WAP 来表 示 模型也有状态管理和数据持久性处理的功能 例如 基于会话的购物车和电子商务 过程也能被 Flash 网站或者无线联网的应用程序所重用 因为模型是自包含的 并且与控制器和视图相分离 所以很容易改变你的应用程序 的数据层和业务规则 如果你想把你的数据库从 MySQL 移植到 Oracle 或者改变你的基 于 RDBMS 数据源到 LDAP 只需改变你的模型即可 一旦你正确的实现了模型 不管你 的数据来自数据库或是 LDAP 服务器 视图将会正确的显示它们 由于运用 MVC 的应用 程序的三个部件是相互对立 改变其中一个不会影响其它两个 所以依据这种设计思想 你能构造良好的松偶合的构件 对我来说 控制器的也提供了一个好处 就是可以使用控制器来联接不同的模型和 视图去完成用户的需求 这样控制器可以为构造应用程序提供强有力的手段 给定一些 可重用的模型和视图 控制器可以根据用户的需求选择模型进行处理 然后选择视图将 处理结果显示给用户 2 2 4 Hibernate Hibernate 是一个开放源代码的对象关系映射框架 它对 JDBC 进行了非常轻量级的 对象封装 7 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库 Hibernate 可以 罗宏 基于 B S 模式的网上书城系统 6 应用在任何使用 JDBC 的场合 既可以在 Java 的客户端程序使用 也可以在 Servlet JSP 的 Web 应用中使用 采用 ORM 映射机制 负责实现 Java 对象和关系数据库之间的映射 把 sql 语句传给 数据库 并且把数据库返回的结果封装成对象 内部封装了 JDBC 访问数据库的操作 向 上层应用提供了面向对象的数据库访问 API 2 2 4 Spring Spring 是轻量级的 J2EE 应用程序开源框架 8 由 Rod Johnson 创建 它是为了解决 企业应用开发的复杂性而创建的 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的 事情 可以为 J2EE 项目提供一揽子解决方案 Spring 的用途不仅限于服务器端的开发 从简单性 可测试性和松耦合的角度而言 任何 Java 应用都可以从 Spring 中受益 Spring 的核心是个轻量级容器 Container 实现了 IoC Inversion of Control 模式 的容器 Spring 的目标是实现一个全方位的整合框架 在 Spring 框架下实现多个子框架 的组合 这些子框架之间彼此可以独立 也可以使用其它的框架方案加以替代 Spring 希 望提供 one stop shop 的框架整合方案 Spring 最为人重视的另一方面是支持 AOP Aspect Oriented Programming 9 然而 AOP 框架只是 Spring 支持的一个子框架 说 Spring 框架是 AOP 框架并不是一件适当的 描述 人们对于新奇的 AOP 关注映射至 Spring 上 使得人们对于 Spring 的关注集中在 它的 AOP 框架上 虽然有所误解 但也突显了 Spring 的另一个令人关注的特色 Spring 提供了 MVC Web 框架的解决方案 但也可以将自己所熟悉的 MVC Web 框架 与 Spring 解合 像是 Struts Webwork 等等 都可以与 Spring 整合而成为适用于自己的 解决方案 Spring 也提供其它方面的整合 像是持久层的整合如 JDBC O R Mapping 工具 Hibernate iBATIS 事务处理等等 Spring 作了对多方面整合的努力 2 2 5 Lucene Lucene 是 apache 软件基金会 jakarta 项目组的一个子项目 是一个开放源代码的全文 检索引擎工具包 10 即它不是一个完整的全文检索引擎 而是一个全文检索引擎的架构 提供了完整的查询引擎和索引引擎 部分文本分析引擎 英文与德文两种西方语言 Lucene 的目的是为软件开发人员提供一个简单易用的工具包 以方便的在目标系统中实 现全文检索的功能 或者是以此为基础建立起完整的全文检索引擎 2 2 6 Compass Lucene 仅是一个 API 它的强大功能都得用写代码去实现 所谓前人栽树后人乘凉 Compass 它提供了一套开源的 高性能的 可灵活配置的搜索引擎 可以为用户的应用程 序提供搜索功能 大家都知道 数据大多是存储在数据库中的 而且应用程序都是有业 务的 做过开发的人都应该熟悉 Hibernate ibatis Spring Struts 等框架吧 其实 Compass 也可以和它们很好的结合在一起进行开发 Compass 对搜索引擎后台的操作进行 了封装 Compass 对 Lucene 的使用就如同 Hibernate 和对 Jdbc 的使用 所以会使用 Hibernate 的使用 Compass 就非常简单 江西理工大学应用科学学院毕业设计 7 2 2 7 Velocity 其实 Java 在模板技术上有很多的实现 例如现在很火的 Freemarker Velocity 等 我 们这里只需要简单的模板功能 完成商品页面的静态化而已 所以选用的是比较简单的 Velocity Velocity 是一个基于 Java 的模板引擎 Template engine 它允许任何人仅仅 简单的使用模板语言 Template language 来引用由 Java 代码定义的对象 当 Velocity 应用于 web 开发时 界面设计人员可以和 Java 程序开发人员同步开发一个遵循 MVC 架 构的 web 站点 也就是说 页面设计人员可以只关注页面的显示效果 而由 Java 程序开 发人员关注业务逻辑编码 Velocity 将 Java 代码从 web 页面中分离出来 这样为 web 站 点的长期维护提供了便利 同时也为我们在 JSP 和 PHP 之外又提供了一种可选的方案 2 2 8 JavaMail JavaMail 是一种可选的 能用于读取 编写和发送电子消息的包 标准扩展 11 可使用这种包创建邮件用户代理类型的程序 其主要目的不是像发送邮件或其他邮件传 输代理 类型的程序那样用于传输 发送和转发消息 换句话说 用户可以与代理类型 的程序交互 以阅读和撰写电子邮件 我们这里只是简单实现用户用邮箱找回密码的功 能 比较简单 2 2 9 OSCache OSCache 是 OpenSymphony 这个开源项目众多 Projects 中的一个 他是一个高效的 J2EE 缓存框架 能够很好的解决动态网站速度的问题 12 动态网站的存在一些令人郁闷的问题如 1 缓存动态内容 其实我们的动态网页上一般只有一部分是动态的 表头 表尾一 般是不变的 如果我们缓存整个网页显然不成 因为有部分是随着请求有可能变的 OSCache 提供的方式是允许我们只缓存一部分网页 2 缓存 2 进制内容 产生的图片和 PDF 文件在服务器加载的时候非常的耗时 OSCache 解决这个问题是通过一个 Servlet2 3 的缓存过滤功能 然后能够缓存任意的 URI 比如一个完整的页面或者是一个产生的图片 PDF 文件 3 容错 有这种情况或许我们会遇到 就是当一个动态的网页出现错误 即便我们 的页面有 95 都加载完毕 但就是由于这个错误 整个页面就会返回错误的提示或页面 OSCache 允许我们提供出现错误时的缓存内容 如果出现就适时的提示出来了 除了上面的这些 Servlet 的特征外 OSCache 完全可以充当任何一个 java 程序的缓存 方案 OSCache 的一般特征如下 1 缓存任意对象 可以不受限制的缓存 JSP 的一部分或是 Http 请求 任何的 Java 对 象都可以被缓存 2 全面的 API 通过 API 可以完完全全的控制 OSCache 的任何特性 3 持久缓存 我们可以把认为重要的数据缓存到硬盘上 4 支持集群 集群缓存数据能被单个的进行参数配置 不需要修改代码 5 缓存记录的过期 你可以有最大限度的控制缓存对象的过期 包括可插入式的刷 新策略 如果默认性能不需要时 但是要注意 OSCache 需要 Java 的版本至少是 java 1 4 我们使用的是 java1 6 所以能 正常使用 罗宏 基于 B S 模式的网上书城系统 8 2 3 开发工具简介 2 3 1 开发软件 MyEclipse9 简介 MyEclipse 企业级工作平台 MyEclipse Enterprise Workbench 简称 MyEclipse 是 对 Eclipse IDE 的扩展 利用它我们可以在数据库和 J2EE 的开发 发布 以及应用程序服 务器的整合方面极大的提高工作效率 它是功能丰富的 J2EE 集成开发环境 包括了完备 的编码 调试 测试和发布功能 完整支持 HTML Struts JSF CSS Javascript SQL Hibernate 在结构上 MyEclipse 的特征可以被分为 7 类 1 J2EE 模型 2 WEB 开发工具 3 EJB 开发工具 4 应用程序服务器的连接器 5 J2EE 项目部署服务 6 数据库服务 7 MyEclipse 整合帮助 对于以上每一种功能上的类别 在 Eclipse 中都有相应的功能部件 并通过一系列的 插件来实现它们 MyEclipse 结构上的这种模块化 可以让我们在不影响其他模块的情况 下 对任一模块进行单独的扩展和升级 简单而言 MyEclipse 是 Eclipse 的插件 也是一款功能强大的 J2EE 集成开发环境 支持代码编写 配置 测试以及除错 5 0 发布 Genuitec 发布了 MyEclipse Enterprise Workbench 5 0 更智能 更快捷 更简单和更 便宜的 J2EE 工具的新版本的诞生 它的价格对于个人和企业开发人员来说都是非常有吸 引力的 这是 J2EE IDE 市场一个重量级的选手 通过增加 UML 双向建模工具 WYSIWYG 的 JSP Strutsdesigner 可视化的 Hibernate ORM 工具 Spring 和 Web services 支持 以及新的 Oracle 数据库开发 MyEclipse 5 0 继续为业界提供全面的产品 6 XGA 发布 1 平台和安装支持 1 兼容 Eclipse 3 3 Europa 1 0 2 支持 Java 5 StringBuffer sb new StringBuffer o visible List params new ArrayList params add true sb append and o parent is null PagerModel pm productTypeService getScollResult sb toString params toArray request setAttribute productTypes pm getData 中间的商品显示 List zxs productService getProductForWhere order by o createDate desc null List zxs2 new ArrayList zxs2 addAll zxs for ProductInfo product zxs2 Set styles new HashSet for ProductStyle style product getProductStyles if style isVisible styles add style break 注意 执行此句代码会把修改后的数据同步回数据库 如果不想把数据同步回 数据库 请在其后调用productInfoService clear product setDescription WebUtil HtmltoText product getDescription product setProductStyles styles request setAttribute zxs zxs2 List cxs productService getProductForWhere where mend true order by o createDate desc null List cxs2 new ArrayList cxs2 addAll cxs for ProductInfo product cxs2 Set styles new HashSet for ProductStyle style product getProductStyles if style isVisible styles add style break product setDescription WebUtil HtmltoText product getDescription product setProductStyles styles request setAttribute cxs cxs2 List pts pm getData Map String List map new HashMap String List for ProductType productType pts List list new ArrayList getTypeids list new Integer productType getId StringBuffer n new StringBuffer 罗宏 基于 B S 模式的网上书城系统 22 for int i 0 i 1 n deleteCharAt n length 1 List ps productService getProductForWhere where o productType id in n toString order by o createDate desc list toArray List ps2 new ArrayList ps2 addAll ps for ProductInfo product ps2 Set styles new HashSet for ProductStyle style product getProductStyles if style isVisible styles add style break product setDescription WebUtil HtmltoText product getDescription product setProductStyles styles map put productType getName ps2 request setAttribute map map return index 在这个方法返回之后 Struts2 会根据返回的字符串到 struts2 xml 中根据配置找出要渲 染的 jsp 文件 在这里就是 index jsp 然后将渲染好的 html 文件返回给客户端 15 5 2 商品分类展示 在本系统中商品的展示除了在主页有部分的展示之外 大多数的商品还是需要到相 应的分类下面进行查找 主页只是显示了每个类别下的最新的商品信息 远远不能满足 用户的需要 当用户知道要购买的图书是在哪个分类下的时候 可以点击相应的类别 查看这个类别下的所有商品 并能根据条件帅选出各种商品的组合 使用方法如下 1 首先在页头那里点击想要查找商品的分类 如点击 综合性图书 显示为如图 5 2 所示 图 5 2 页面页头分类列表 页头分类列表的数据是用 AJAX 的技术实现的 可由下面的代码实现 public String menu ajax throws Exception LinkedHashMap orderBy new LinkedHashMap StringBuffer sb new StringBuffer o visible List params new ArrayList params add true sb append and o parent is null 江西理工大学应用科学学院毕业设计 23 PagerModel pm productTypeService getScollResult sb toString params toArray request setAttribute productTypes pm getData return menu ajax 2 进入相应分类的商品列表页 默认使用的是图片版的显示方式 当点击排序方式 中的一种时 商品将按点击的那个排序方式排序 默认按上架的时间排序 在商品列表 页中 左侧将显示该类别下的所有子类别 下面是该类别下用户购买最多的商品 右侧 上面一块是用于对销量和价格进行筛选的地方 再下面一点事该类别下的商品的统计显 示 整体的显示如图 5 3 所示 图 5 3 图片版商品列表 3 当想使用图文版的时候 只需点击右上方的图文版的链接即可 图文版除了商品 的显示方式有所差别之外 剩下的部分基本和图片版一模一样 图文版的显示如图 5 4 所 示 图 5 4 图文版商品列表 罗宏 基于 B S 模式的网上书城系统 24 对于整个的商品列表页不论是按图文版还是图片版显示 还是要根据各种方式进行 筛选 整个的数据提供都只要使用一个方法就能提供 实现的代码是 public String execute throws Exception PageView pageView new PageView 12 frontProductForm getPage pageView setPagecode 20 int firstindex pageView getCurrentpage 1 pageView getMaxresult LinkedHashMap orderby buildOrder frontProductForm getSort StringBuffer jpql new StringBuffer o visible List params new ArrayList params add true List typeids new ArrayList typeids add frontProductForm getTypeid getTypeids typeids new Integer frontProductForm getTypeid StringBuffer n new StringBuffer for int i 0 i typeids size i n append append n deleteCharAt n length 1 jpql append and o productType id in n toString params addAll typeids if frontProductForm getBrandid null params add frontProductForm getBrandid pageView setPagerModel productInfoService getScollResult jpql toString params toArray orderby firstindex pageView getMaxresult for ProductInfo product pageView getRecords Set styles new HashSet for ProductStyle style product getProductStyles if style isVisible styles add style break 注意 执行此句代码会把修改后的数据同步回数据库 如果不想把数据同步回 数据库 请在其后调用productInfoService clear product setDescription WebUtil HtmltoText product getDescription product setProductStyles styles 清理掉一级缓存 将托管状态的对象变成游离的状态 productInfoService clear request setAttribute pageView pageView Integer ids new Integer typeids size for int i 0 i0 ProductType type productTypeService load frontProductForm getTypeid if type null List types new ArrayList types add type ProductType parent type getParent while parent null types add parent parent parent getParent request setAttribute producttype type request setAttribute types types return getView frontProductForm getStyle 程序会根据getView frontProductForm getStyle 返回的值去选择是渲染图文版还是图 片版的页面 5 3 商品详细页展示 商品详细页展示的是商品的详细信息 包括商品的编号 商品的市场价 我们卖的 价格 能节省多少钱 还有商品的详细说明等 商品详细页是展示商品所有信息的地方 在后台添加商品时在商品说明里面多加点图片和字体多几种颜色等都有利于用户了解商 品 吸引顾客 商品详细页的整体显示如图 5 5 所示 图 5 5 商品详细页 对于商品详细页的数据提供非常简单 只需要找出这个商品然后交个 jsp 来渲染就行 数据提供的代码为 public String execute throws Exception ProductInfo product productService load frontProductForm getProductid if product null request setAttribute message 获取不到你需要浏览的产品 罗宏 基于 B S 模式的网上书城系统 26 request setAttribute urladdress return message request setAttribute product product return product 在代码中加入product null的判断是防止用户直接在url中输入我们还没有的商品的id 号而使系统报错 有个这个判断就会跳转到商品找不到页面 有力用户体验 5 4 购物车管理 当用户在商品详细页中点击购买时将进入购物车页面 里面详细地列出了你点击的 所有要购买的商品的简单信息 显示当前一共要支付的费用 并提供了修改购买个数的 地方 显示如图 5 6 所示 图 5 6 购物车页面 当修改商品的数量时 并点击更新时将一起更新要支付的费用 如我将 Think in java 这本书的数量修改成 3 本 那么共计的价钱由 110 0 元变成了现在的 250 0 元 显示如图 5 7 所示 图 5 7 购物车页面 在整个的购物车管理中 因为购物车是存在 session 中的 所以所有对购物车的操作 都是修改 session 中的数据 对购物车的实现的代码节选为 清空购物车 public String deleteAll throws Exception BuyCart cart WebUtil getBuyCart request cart removeAll 江西理工大学应用科学学院毕业设计 27 删除购物项 public String delete throws Exception BuyCart cart WebUtil getBuyCart request ProductInfo product new ProductInfo cartForm getProductid product addProductStyle new ProductStyle cartForm getStyleid BuyItem item new BuyItem product cart removeItem item 修改购买数量 public String updateAmount throws Exception setAmount request 修改商品购买数量 param request private void setAmount HttpServletRequest request BuyCart cart WebUtil getBuyCart request for BuyItem item cart getItems String paramName amount item getProduct getId item getProduct getProductStyles iterator next getId Integer amount new Integer request getParameter paramName item setAmount amount 结算 public String settleAccounts throws Exception setAmount request 5 5 订单生成 当用户确定好购买的商品后 点击进入结算中心将在用户应该登录登录的情况下进 入生产订单的程序 生产订单需要几个步骤 罗宏 基于 B S 模式的网上书城系统 28 1 进入配送地址输入页 这里填写的是购买者的信息显示如图 5 8 所示 图 5 8 配送地址页 当收货人不是购买者时需要点击不相同按钮 输入收货人的详细信息显示如图 5 9 所 示 图 5 9 配送地址页 2 完成配送信息之后点击下一步将进入送货方式和支付方式的选择界面 这里你可 以选择自己愿意的一种方式显示如图 5 10 所示 图 5 10 送货方式支付方式页 3 当配送方式和支付方式选择好后点击下一步就进入订单确认页了 在这里将显示 该订单的所有重要信息 当发现有错误时还能点击修改按钮 修改相应信息 显示如图 江西理工大学应用科学学院毕业设计 29 5 11 所示 图 5 11 订单确认页 4 当订单的信息确认无误后 可点击订单确认按钮 确认订单 我们将显示该订单 的情况 显示如图 5 12 所示 图 5 12 订单生产页 在整个的生成订单的模块中其实就是一个个的表单 这些数据其实还是跟购物车绑 定在一起的 放在来 session 里面 最后的显示就是从 session 里面取数据出来 下面提供 保存订单信息部分的代码 代码实现为 public String saveorder throws Exception BuyCart cart WebUtil getBuyCart request cart setNote deliverForm getNote Order order orderService createOrder cart WebUtil getBuyer request getUsername WebUtil deleteBuyCart request public Order createOrder BuyCart buyCart String username Order order new Order Buyer buyer Buyer hibernateTemplate load Buyer class username order setBuyer buyer order setDeliverFee buyCart getDeliveFee order setNote buyCart getNote order setOrderContactInfo buyCart getContactInfo order setOrderDeliverInfo buyCart getDeliverInfo order setState OrderState WAITCONFIRM order setPaymentWay buyCart getPaymen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 县级体育馆社会体育指导员飞盘高尔夫工作年度总结
- 大型云项目架构设计能力提升计划中级
- 探秘成功的网络营销背后产品选择的核心因素
- 初级汽车维修技能实训指导书
- 会计工作计划与财务报表编制指南
- 中国石油拉美面试准备博客
- 话务员呼叫中心情绪管理与压力应对好用指南
- 平顶山燃气整改通知书
- 广东工业大学助学班入学通知书
- 广西服预备役通知书
- 第六课-实现人生的价值-课件-高中政治统编版必修四哲学与文化-
- 砂石料场租赁协议
- 第15届全国海洋知识竞赛参考试指导题库(含答案)
- 收养申请书模板
- 干部人才培养与医院管理
- 公共基础知识复习资料梳理版
- 《SEM基础知识培训》课件
- 农村耕地承包权永久转让合同
- 【MOOC】数字逻辑与数字系统设计-中国矿业大学 中国大学慕课MOOC答案
- Unit4 Body Language Using Language 说课稿-2024-2025学年高中英语人教版(2019)选择性必修第一册
- 医疗机构信息系统安全防护预案
评论
0/150
提交评论