首页 电子商务专业毕业设计-校园网上跳蚤市场系统分析与设计

电子商务专业毕业设计-校园网上跳蚤市场系统分析与设计

举报
开通vip

电子商务专业毕业设计-校园网上跳蚤市场系统分析与设计题目: 校园网上跳蚤市场系统分析与设计 院 系 信息学院 专 业 电子商务 班 级 学生姓名 学 号 导师姓名 导师职称 教授 下面的内容包括任务书、开题报告、论文主体部分。 都已完成排版。 北京XXX本科毕业论文(设计)任务书 学生姓名 专 业 电子商务 学 号 毕业论文 基于JSP的校园网上跳蚤市场系统分析与设计 选题方向 毕业论文应该完成的内容主要包括以下几个方面: 毕 1. 校园网上跳蚤市场的开发背景 业 2. 校园网上跳蚤市场的开发平台与技术准备 论 3. 校园网上跳蚤市场的系统分析与设...

电子商务专业毕业设计-校园网上跳蚤市场系统分析与设计
题目: 校园网上跳蚤市场系统分析与设计 院 系 信息学院 专 业 电子商务 班 级 学生姓名 学 号 导师姓名 导师职称 教授 下面的内容包括任务书、开题 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 、论文主体部分。 都已完成排版。 北京XXX本科毕业论文(设计)任务书 学生姓名 专 业 电子商务 学 号 毕业论文 基于JSP的校园网上跳蚤市场系统分析与设计 选题方向 毕业论文应该完成的内容主要包括以下几个方面: 毕 1. 校园网上跳蚤市场的开发背景 业 2. 校园网上跳蚤市场的开发平台与技术准备 论 3. 校园网上跳蚤市场的系统分析与设计 文 4. 校园网上跳蚤市场的数据库设计 要 5. 校园网上跳蚤市场的各功能模块的逻辑设计 求 6. 校园网上跳蚤市场的维护与运营 7. 对该系统的自我 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 1. 3月15日前完成开题报告,将打印稿提交给指导老师,指导教 师给出书面成绩与意见,确定学生是否进入论文(设计)阶段。 2. 3月25日前必须将论文初稿提交给指导教师,初稿的内容主要 是进行问题的分析,包括需求分析、可行性分析、数据分析等,这计 些内容必须做完。 划 3. 4月15日前必须提交论文纸质的二稿,二稿的内容主要是进行进 对于相应问题的解决办法的研究与论证。初步完成对整篇论文内容度 的写作。 4. 5月10日前学生必须提交论文的终稿,完成整篇论文的写作并 对格式进行规范化,逾期者论文不能进入 答辩 答辩ppt下载中国建筑转正答辩ppt下载民事答辩状范文下载毕业答辩毕业答辩模板 环节。 5月14日到5月21日进行论文答辩环节。 参 考 资 料 推 荐 指 导 教 师 签 字: 毕业论文指导委员会主席签字: 年 月 日 年 月 日 北京XXX本科毕业论文(设计)开题报告 学生姓名 学 号 信息学院 院 系 班 级 论文(设计)题目 校园网上跳蚤市场的分析与设计 指导老师姓名 职 称 教授 指导老师研究方向 数据挖掘 一、毕业论文(设计)选题的依据(选题的目的和意义、该选题国内外的研究现状及发展趋势、主要参考文献等) 在网络技术越发成熟的社会背景下,各种各样的电子商务类网站纷纷应运而生,可以很大程度上解决人们信息资源的闭塞以及地域上的限制。作为大学校园,随着学生每年的升学、毕业和购买能力逐渐提升,产生了大量各种类型二手商品与需求,但由于信息交流的不畅,很多只限于校园内不定期的跳蚤市场的方式进行交易。这种形式虽好,但是有很多的偶然性和局限性,使得商品信息无法做到及时的交流,造成了资源的浪费。于是一种新的二手商品信息交流的方式出现了,就是基于Web的二手商品电子商务网站系统。通过这个系统,可以使每个校园网用户发挥自己的主动性,可以非常便捷的发布信息与获得信息,还可以对同类产品进行横向比较,做出选择。在合理利用校园网络资源的情况下也极其符合大学生的自身需求特性。 目前大部分高校都有自己的校园网,部分院校也完成了校园“一卡通”工程的建设,校园网的建立与不断完善都是为学校教职员工与学生提供学习、工作和生活上的便利。据调查,目前上网已成为大学生活不可或缺的一部分,在校大学生平均上网率达到了92%,其中每种上网时间超过10h的学生占在校学生总数的1/3。而现在大学生网上交易基本上还是以BBS论坛为主,BBS用户虽多,但由于功能有限、管理不便等因素,渐渐不能满足学生实际交易中的需求。因此针对我校设计一个校园网上跳蚤市场的将为在校学生提供一个平台,在充分开发校园网利用价值的同时也满足了学生的需求。 参考资料: [1]唐爱国,杭志,王建明.Web 2.0 动态网站开发-JSP技术详解与应用实 践 北京:清华大学出版社,2009.1 [2]明日科技,卢翰,王国辉.JSP项目开发案例全程实录 北京:清华大学出版社,2011.1 [3]王晓敏等(信息系统分析与设计(第3版)(北京:清华大学出版社,2006(4 [4] VanLans,R.F((著)徐兴杰等(译)MySql开发者权威指南(北京:机械工业出版社,2008(1 [5]张新曼(Jsp网络编程从入门到精通(北京:人民邮电出版社,2007(2 [6]周桓,王殊宇(Jsp项目开发全程实录丛书(北京:清华大学出版社,2008(6 二、毕业论文(设计)的主要研究内容及预期目标 (一)主要研究内容: 实现网站系统的不同用户实现以下功能 1、 网站系统前台: 首页:包括会员的登陆及注册,会员可以查看公告栏和商品信息等; 卖家:包括添加商品信息,评价买家功能等; 买家:包括查询商品信息,查询卖家信息,评价商品功能 2、 网站系统后台: 用户管理:主要包括用户信息查询、用户信息删除、用户权限修改等; 公告管理:主要包括公告信息查询、公告信息添加、公告信息修改等; 二手商品管理:主要包括商品的发布、下架、卖价管理、商品信息修改等; 在本网站系统中,涉及以下几部分使用用户 1、网站管理员:是整个系统的管理员,是系统中最高级别的用户,拥有系统 中所有功能模块的使用权限。 2、普通用户:是系统的使用者,拥有商品信息查询、商品买卖,互相评价的权限。 (二)预期目标 1、针对网站系统中不同用户类型具有不同的管理功能。 2、动态式信息发布:考虑到网站的实时性,校园网上跳蚤市场采用动态网页技术实现网站信息的更新维护。 3、提供多种信息搜索方式,用户可更具需要,方便、快捷的查找所需信息。 4、系统架构清晰、界面友好美观。 三、毕业论文(设计)的主要研究 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 (拟采用的研究方法、准备工作情况及主要措施) 研究方法: 1、 研究对象:使用JSP进行Web动态网页开发。 2、 研究工具:采用mvc开发模式中的mode1的模型。采用Dream weaver构 建页面,MYSQL构建后台数据库,使用java来构建系统模块,用jsp 语言编写控制部分,编写系统设计说明书。 3、 研究程序: ? 需求分析阶段 分析设计任务书的要求和用户需求,进行可行性分析和需求分析,确定系统所需 的功能和任务目标;安装建立设计所需软硬件环境;对系统所需的数据进行分析, 确定系统的输入数据、输出数据和中间结果数据,以及数据的格式、类型、范围, 所要输出的数据表格等。 ? 设计阶段 进行方案设计,系统分析,框架设计和模块划分,并进行分工;按模块编写程序 代码,进行模块调试和测试。 ? 调试阶段 模块的连接,系统调试和完善;设计系统调试数据,进行系统测试,并纠正系统 错误;由用户或指导教师对系统进行验收。 ? 毕业设计资料准备阶段 整理和编写毕业设计规划报告书、网站使用说明书等设计资料;提交毕业设计资 料。 准备工作: 1、查阅相关参考文献及系统 2、准备系统设计和实施所需的各种软件 四、毕业论文(设计)研究工作进展安排 1. 2011年3月15日前完成开题报告,将打印稿提交给指导老师,指导教师给出书面成绩与意见,确定学生是否进入论文(设计)阶段。 2. 2011年3月25日前必须将论文初稿提交给指导教师,初稿的内容主要是进行问题的分析,包括需求分析、可行性分析、数据分析等,这些内容必须做完。 3. 2011年4月15日前必须提交论文纸质的二稿,二稿的内容主要是进行对于相应问题的解决办法的研究与论证。初步完成对整篇论文内容的写作。 4. 2011年5月10日前学生必须提交论文的终稿,完成整篇论文的写作并对格式进行规范化,逾期者论文不能进入答辩环节。 5. 2011年5月14日到5月21日进行论文答辩环节。 五、指导老师意见 指导老师(签名) 年 月 日 六、院系毕业论文指导委员会意见 院系(盖章) 年 月 日 北京XXX本科毕业论文(设计)写作记录卡 写作 指导教 时间 主要工作内容 环节 师签字 1(在选题前后应广泛对社会环境进行调查、阅读文献、 搜集资料、了解本学科国内外发展动态,为开题做准备。 2(根据毕业设计的开发难易程度和工作量,结合本专业 特点、专业应用的实际和社会经济发展需要,确定选题选题 的内容范围。研究工作主要是本学科的应用研究,研究 内容主要以体现学生的独立思考思考能力或应用专业知 识分析和解决实际问题的能力为主。 3(由指导教师依据专业培养方案的要求及本科生的学习 基础、科研能力确定选题范围,避免论文选题范围过大。 1(选定论文题目,让读者明了毕业论文的大致范围和方 向,题目应力求简明。 2(阐明课题的来源和依据。说明选题的经过,选题的理 论意义和现实意义,选题的国内现状和自己的设想,学 术和实际应用价值,拟采用的研究方法和手段,预期达 到的水平,可能遇到的困难和解决的途径、方法等等。 3(对选题的研究设想阐述,包括研究的基本内容、需要 解决的关键问题,充分把握和体现论文的创新点。 开题 4(编写提纲。定选题,充分收集,阅读参考资料。酝酿报告 形成论证角度和基本论点之后,就可进行论文提纲的撰 写。论文提纲反映了论文基本观点,佐证材料,论证角 度和步骤,是一个依照逻辑关系层层展开的纲目体 系。 5. 选择合适的参考文献。凡国内外研究现状介绍中所提 到的观点或文献,其来源应在参考文献中列出,应列出 至少5-10篇以上已阅读的与论文主题紧密相关,并将在 论文中引用的参考文献,以及其它已获取的与论文主题 相关的文献。 搜集 1.在撰写毕业论文前必须详尽的搜集与论文内容有关的资料信 资料 息,主要包括第一手资料、他人的研究成果、背景材料等。使论 文有稳固的理论依据。 2.对搜集到的资料进行整理,保证资料与所写论文的适用性、资 料的全面性、真实性。并辨析资料是否新颖、是否典型。确保所 搜集的资料切实可用。 初稿 二稿 定稿 北京XXX毕业论文(设计)指导教师评审记录卡 指导教师 研究方向 职 称 学生姓名 院 系 学 号 写作 指导教 时间 修改意见 环节 师签字 选题 与开 题报 告 得分------------------ 中期 检查 得分------------------ 终稿 得分------------------ 注:各项得分全部采用百分制。 彩色分隔页 题目: 校园网上跳蚤市场系统分析与设计 院 系 信息学院 专 业 电子商务 班 级 学生姓名 学 号 导师姓名 导师职称 教授 2011 年 5月 14日 【摘要】 在网络技术越发成熟的社会背景下,各种各样的电子商务类网站纷纷应运而生。在大学校园中,随着学生每年的升学、毕业和购买能力逐渐提升,产生了大量各种类型二手商品与需求。与此同时,各大高校网络设备的投资与应用系统的不足已经形成鲜明对比,造成了很大的资源浪费。因此,利用校园网开发校园电子商务系统是个双赢的选择。 本文针对网上二手商品交易的特点,首先从需求分析开始,以统一建模语言(UML)为分析设计描述语言,采用了基于J2EE的MVC设计模型中的Model1开发模型、B/S开发架构,在view层运用JSP语言,还使用了Dreamweaver网页开发工具;在Model方面采用了java语言,使用了bean,JDBC等技术,所用的工具为jdk1.6;而在control部分则是采用了JSP与JAVABEAN的结合,即在JSP页面中调用JAVABEAN和java程序处理逻辑业务,在后台数据库则采用了SQL Server 2000;而在服务器上则使用了apache软件基金会开发的tocat6.0。用以上技术平台完成了网站的架构设计和详细设计,并最终将网站实现为包括显示商品相关信息、用户注册与登陆、会员相关信息的显示及修改功能、订单处理、二手商品交易(拍卖)系统和管理员模块等子模块的电子商务网站。 关键字:电子商务;校园网;二手交易;跳蚤市场 【Abstract】 With the vigorous development of internet, E-commerce sites has miraculous rise. There are a large number of various types of second-hand goods and needs on campus with students’ graduation annually. At the same time, the high investment of university was in contrast to the low-level of application system. Therefore, developing campus e-commerce system is a win-win choice. My E-commerce system has been designed used MVC mold, and has been completed use three technique, there is JSP, JAVA and SQL Server. The tool of make the view is Dreamweaver, and the development of function mold use the JAVA language, the server is Tomcat 6.0. Key words: E-commerce; Second-hand goods; Campus network; JSP 目录 1.引言.............................................................. 1 1.1研究背景 ...................................................... 1 1.2校园电子商务的应用 ............................................ 1 1.3系统设计概述及目标 ............................................ 2 2.系统分析.......................................................... 4 2.1需求分析 ...................................................... 4 2.2可行性分析 .................................................... 4 2.3系统功能分析 .................................................. 5 3.系统设计......................................................... 11 3.1用户登录模块设计 ............................................. 11 3.2购物模块设计 ................................................. 17 3.3拍卖模块设计 ................................................. 21 4.数据库设计....................................................... 25 4.1数据字典 ..................................................... 25 4.2数据库基本表的设计 ........................................... 26 5.系统实现......................................................... 30 5.1模块功能详细介绍和部分功能代码 ............................... 30 5.2网站界面设计 ................................................. 38 6.结束语........................................................... 42 参考文献........................................................... 43 外文文献及翻译..................................................... 44 致 谢............................................................. 59 北京XXX2011届毕业设计 1.引言 1.1研究背景 在网络技术越发成熟的社会背景下,各种各样的电子商务类网站纷纷应运而生,可以很大程度上解决人们信息资源的闭塞以及地域上的限制。作为大学校园,随着学生每年的升学、毕业和购买能力逐渐提升,产生了大量各种类型二手商品与需求,但由于信息交流的不畅,很多只限于校园内不定期的跳蚤市场的方式进行交易。这种形式虽好,但是有很多的偶然性和局限性,使得商品信息无法做到及时的交流,造成了资源的浪费。于是一种新的二手商品信息交流的方式出现了,就是基于Web的二手商品电子商务网站系统。通过这个系统,可以使每个校园网用户发挥自己的主动性,可以非常便捷的发布信息与获得信息,还可以对同类产品进行横向比较,做出选择。在合理利用校园网络资源的情况下也极其符合大学生的自身需求特性。 1.2校园电子商务的应用 目前大部分高校都有自己的校园网,部分院校也完成了校园“一卡通”工程的建设,校园网的建立与不断完善都是为学校教职员工与学生提供学习、工作和生活上的便利。据调查,目前上网已成为大学生活不可或缺的一部分,在校大学生平均上网率达到了92%,其中每种上网时间超过10h的学生占在校学生总数的1/3。而现在大学生网上交易基本上还是以BBS论坛为主,BBS用户虽多,但由于功能有限、管理不便等因素,渐渐不能满足学生实际交易中的需求。因此针对我校设计一个校园网上跳蚤市场的将为在校学生提供一个平台,在充分开发校园网利用价值的同时也满足了学生的需求。 从电子商务参与人员角度,我们可以将校园电子商务划分为B2C、C2C、C2B2C三种模式。 (1) B2C模式。B2C电子商务是由商家通过网站向消费者提供商品和服务的一种商务模式。这种电子商务模式是校园电子商务中主要交易模式。根据是否有传统商界的直接参与,这种模式可以分为Online和Click-and-Mortar两种模式。 Online B2C模式。这种模式是指在线企业或者零售商与消费者之间的电子交易模式。在校园电子商务情况下,在线商家角色应由电子商务网站来扮演。网站可预先购进一些常用的日常消费品销售给消费者,并在销售的同时根据买房需 1 北京XXX2011届毕业设计 求对库存进行调整,最后争取实现零库存。同时进行客户关系管理和物流配送、售后服务等工作。实现这种模式,缺点是,电子商务网站需要雇用很多人进行商品采购、物流配送、售后服务等工作,增加了很多成本。优点是,一方面可以为更多学生提供勤工助学的机会;另一方面,在电子商务网站规模较小,直接参与商家不多时,这种模式可以保证网站的盈利。 Click-and-Mortar B2C模式。这种模式是传统的企业与网络联合的一种商业模式,也是电子商务看好的一种模式。在校园电子商务中,参与B2C交易的主体通常由学校相关单位、校园里面或周围的企业或商店。其中,传统的连锁或便利店与校园电子商务相结合是校园电子商务未来发展的方向。 (2) C2C模式。C2C模式是消费者个人对个人的电子商务模式。这种模式主要的特点是:他是一种买卖双方通过网上完成交易的自由贸易。它便利了个人之间的商品流通(特别是二手商品)。这种电子商务模式由卖方(买方)在网上发布消息,由多个买者(卖者)竞价,或讨价还价,最终达成交易的模式。这是校园电子商务最常见的商务模式。 (3) C2B2C模式。C2B2C模式,这是一种典型的中介型电子商务模式。是指有一群有共同消费需求的顾客,通过互联网互相交流而形成各种“主题式消费者群体”并通过电子商务网站反馈给企业,企业在根据需求,销售给他们满意的产品。C2B2C电子商务消除了“信息不对称”现象,让消费者对产品功能和价格都能有详实的理解,并且让消费者参与到产品服务过程中。这种模式中的B必须是充当中介的电子商务网站或中介公司。 正如以上介绍的,校园电子商务存在多种模式,怎样建立一个适合我校,并能够有发展趋势的电子商务网站,将需要结合实际情况进行比较分析。 1.3系统设计概述及目标 校园网上跳蚤市场主要实现显示商品相关信息、用户注册与登陆、会员相关信息的显示及修改功能、订单处理、二手商品交易(拍卖)系统和管理员模块这6大基本功能。 在商品浏览及订单处理环节,用户可通过点击“查看”,了解商品详细资料。本系统为用户提供的是购物车模式,用户可以通过点击商品后,商品会自动加载到购物车面板,用户确定所需商品后,只需点击确定即可;针对二手商品交易模块,本系统采用拍卖方式,用户可以浏览及竞拍所拍卖的物品。再整个系统中,订单处理与拍卖系统是最为重要的功能,用户从浏览、下订单/拍卖至最终确认, 2 北京XXX2011届毕业设计 中间的每个环节都需要保证数据的可靠性。而系统管理员将通过较为灵活的更新操作,对流程中的每个步骤进行管理。 校园网上跳蚤市场主要实现目标有以下几点: (1)根据网站系统的运作流程设计开发,流程中的每个步骤在系统中都必须有所体现,保证程序的正确性。 (2)针对网站系统中不同用户类型具有不同的管理功能。有良好的用户身份认证体制和灵活的密码更改模块;用户权限可以通过管理员灵活修改;有手动备份等操作。 (3)动态式信息发布:考虑到网站的实时性,校园网上跳蚤市场采用动态网页技术实现网站信息的更新维护。 (4)提供多种信息搜索方式,用户可更具需要,方便、快捷的查找所需信息。 (5)系统架构清晰、界面友好美观。 3 北京XXX2011届毕业设计 2.系统分析 2.1需求分析 随着高校规模的扩张,过去多以小规模、自发型的校园商业形式已经不再适合现代消费和服务模式,如何进行校园电子商务运作,建立一个基于校园网的经济、实用、安全、高效、稳定的校园电子商务系统是真正实现数字化校园的重要问题。 校园电子商务系统的出现不仅能使在校师生的生活变得越来越便利,解决师生日常生活工作中的很多问题,而且还能改变他们的消费方式和购物习惯。此外,在校园开展电子商务,可以营造良好的电子商务的现实环境,也为学校的电子商务教学提供创造和培养电子商务合格人才的教学条件。 作为在校园网络环境中建立的电子商务网站,在其主要用户群体和网站功能方面又与一般电子商务网站有所区别。为此,校园网上跳蚤市场网站应具备以下特点: (1) 界面统一友好:更注重信息的有效、实用性,关注师生生活,满足师生需 求。 (2) 规范、完善的基础信息设置:系统要实现对基础信息的规范管理,包括商 品信息和用户信息等。 (3) 商品分类详尽:商品除了按传统分类方法,还应设置特殊类别,如二手商 品类、特价商品类等。 (4) 模糊商品查询:为用户提供一个方便、快捷的商品信息查询功能。商品除 了能按大类检索,还应该实现按不同分类进行检索,此外,还需实现模糊 查询。 (5) 新上架商品和特价商品展示:新上架和特价商品定时更新摆在显眼位置。 (6) 网上购物和支付:由于网站用户针对是在校师生,所以采用线上提供交易 信息,线下交易,交易成功后在提供反馈的形式,形成良好的信誉体系。 (7) 商品销售排行:对商品销售情况进行统计,实现商品的自我推荐,同时帮 助用户作出决策。 2.2可行性分析 可行性研究是任何一个系统开发必须进行的一项工作,这对于保证资源的合理使用、避免浪费是十分必要的,也是系统一旦开始就能顺利进行的必要保证。 4 北京XXX2011届毕业设计 校园网上跳蚤市场充分利用了校园网络资源,并为在校广大师生提供网上交易的便捷服务,是校方与用户都能够从中获益的途径。 首先在经济方面学校为了便利学生的学习与生活建有内部的局域网,且网络使用费用便宜。局域网将校园内大部分部门、机构、宿舍等联系起来,以达到信息资源传输与共享、提高效率、优化组合的目的。80%以上的同学经常使用网络,为校园电子商务的开展奠定了基础。除此之外,由于师生居住非常集中,使得物流的配送准确、及时,成本大大降低。在学校的支持与帮助下,通过学生勤工助学的方式还可以解决电子商务物流配送中的“最后一英里”的问题,同时也推动了校园电子商务的发展。 技术方面本网站是在internet环境下实现的,是基于b/s架构下开发的。在这个网站中,以windows(2003server/XP)为操作系统平台,采用JSP技术进行开发,借助Deamweaver CS5工具,数据库服务器采用SQL Server2000。此外现在的软硬件都能很好地满足开发需求,在高校内更有一大批精通网站开发的人才存在,能够满足网站平时维护工作。因此基于web的校园网上跳蚤市场在技术上是可行的。 根据以上的分析可以得出结论:可以立即展开对网站的开发。 2.3系统功能分析 本篇论文对系统的分析采用的是面向对象的分析方法OOA(Object-Oriented Analysis),面向对象分析是在系统开发过程中完成了系统业务调查以后,按照面向对象的思想来分析问题。面向对象分析是面向对象系统开发的重要环节,其主要任务是通过对问题空间的分析,识别并确定其中的对象和属性,建立其中对象之间的事物实例。校园网上跳蚤市场所采用的是统一的建模语言UML(Unified Modeling Language),主要是通过UML中提供的基本图,来对系统进行分析。在用户需求分析中,用的是UML中的用例图来捕获用户的需求。用包图来描述系统的分层结构。用动态模型的顺序图和活动图来描述类之间的协作。最后用类图来阐述对系统各个类之间关系。 (一)系统描述 首先对系统描述如下:校园网上跳蚤市场网站包括两个基本的部分,一个是前台商品交易程序,用户在前端进行会员的注册、登陆,浏览、搜索商品,查看最新的公告,卖家的添加商品信息,以及交易后互相评价功能;另一个是后台网站管理员在此管理商品信息的发布,录入、更改商品信息,订单的查询、处理,并管理在网站注册的用户等。 5 北京XXX2011届毕业设计 (二)角色识别 第二步进行对系统角色的识别。角色识别的任务是找出所有可能与系统发生交互行为的外部实体、对象和系统。它们的行为不受系统控制,但是可以提供输入给系统。 当用户访问系统时,浏览商品和最新公告,并使用购物车筛选自己看中的商品,购物完后确认结账,并保留订单以便收到货物进行核对,很显然系统存在这样的主要角色,我们定义这样的角色为前端用户。在系统的后台,需要人员管理商品、公告,查询、处理订单,管理注册用户,则定义此类角色为系统管理员。 (三)用例识别 进行完角色的识别,就要开始完成用例识别了。用例图(Use Case Diagram) 是从用户的角度描述系统功能的,并指出各功能的操作者。用例图用来支持系统需求,它定义系统的边界,关注的是系统外部功能的描述,它从外部参与者的角度,描述系统外部的动态行为和静态行为的功能组合。 用例图显示谁将是相关的用户、用户希望系统提供什么服务以及用户需要为系统提供的服务,以便使系统的用户更容易地理解这些元素的用途,也便于系统开发人员最终实现这些元素。 用例图中的每一个参与者是一个类,而不是类的实例。定义了一个参与者,实际上就定义了一个类。参与者是系统外部的一个实体,它以某种方式参与用例的执行过程,参与者通过向系统输入或请求系统输入某些事件来触发系统的执行。 用例图中的用例是用来描述参与者可以感受到的完整的功能,它是由系统执行的一个动作序列,并能产生可观察的结果指给某个特定的参与者,每一个用例也可以看成是一个类,用来完整地描述系统功能。 6 北京XXX2011届毕业设计 根据前面的需求分析过程中,明确了系统的两类参与者及相关用例,即前端用户和系统管理员。 (1)前端用户 查看用户信息用户登录 修改用户信息用户注册 管理个人信息 竞拍 竞拍商品商品搜索 查看竞拍状态 前端用户 浏览购物车 浏览信息购买商品浏览商品信息 将商品放入购物车 清空购物车查看公告信息 编辑购物车中商品数量取消购物车中商品 图1 前端用户用例图 7 北京XXX2011届毕业设计 (2)系统管理员 添加管理员删除用户 删除管理员查看用户信息 添加拍卖商品用户管理 添加公告 拍卖管理修改公告拍卖修改公告管理 删除公告拍卖查看 系统管理员删除订单添加新商品 订单管理商品管理 订单查询修改商品信息 修改商品类别确认订单 删除商品 添加商品类别 图2 系统管理员用例图 从用例图中可以看出,系统的大部分功能都是由前端用户与系统管理员对应完成的。其中,系统管理员统一对系统的公共资源进行管理,如用户管理、公告管理。下面是本系统中涉及到的主要用例的简单介绍: (1) 登录/退出系统:本用例描述了用户、系统管理员如何登录和退出本系统, 以及登录时要注意的事项。 (2) 用户管理:本用例主要描述了系统管理员如何维护系统的注册会员的信息。 本用例可以细化为:查看用户信息、删除用户、添加管理员和删除管理员。 由于要完成商品的交易,因此注册会员必须提供真实可靠的信息,而系统 则需要保证用户信息的安全。 (3) 拍卖管理:本用例主要描述了系统管理员如何管理拍卖的进行,本用例可 以细化分为添加拍卖商品,修改拍卖商品和查看拍卖商品信息。 (4) 商品管理:本用例主要描述了系统管理员如何维护系统的出售商品的信息。 本用例可以细化为:添加商品、修改商品信息、删除商品、添加商品类别、 修改商品类别及删除商品类别。由于要完成商品的交易,因此系统管理员 要保证商品信息的准确及实时性。 8 北京XXX2011届毕业设计 (5) 订单管理:本用例主要描述了系统管理员如何处理网站交易产生的订单。 本用例可以细化为订单查询、订单修改、订单删除。 (6) 公告管理:本用例描述了系统管理员如何管理和维护系统中的网站自身的 公告管理。本用例可以进一步细化为:添加公告信息、修改公告信息和删 除公告信息。本用例是面向用户的,为用户提供实时的有用信息。 (四)组织功能模块 用户管理订单管理商品管理拍卖管理公告管理 图3 组织功能模块图 9 北京XXX2011届毕业设计 (五)系统功能模块的设计 查看用户信息用户管理删除用户信息 添加管理员 删除管理员 添加拍卖商品拍卖管理拍卖修改 拍卖查看 添加新商品 修改商品信息首 商品管理删除商品 页添加商品类别 修改商品类别 确认订单订单管理订单查询 删除订单 添加公告公告管理修改公告 删除公告 图4 系统功能表 10 北京XXX2011届毕业设计 3.系统设计 本系统的开发目的是实现利用校园网提供一个系统化,规范化的电子商务平台,让使用者互相提供便利的同时,充分利用网络资源,最终达到一个双赢的局面。在本系统设计部分,将要简明介绍校园网上跳蚤市场的几个重要组成部分,以及对一些重要流程进行详细的解释。根据以上的需求分析,概括出本系统主要包括:用户登录模块、购物模块、拍卖模块、订单管理模块、公告管理模块。 在分析本系统主要模块时,先用流程图进对整体模块中需要处理的各个工序逻辑过程进行分析。然后以面向过程的角度运用活动图描述对象活动的顺序关系和所遵循的规则。与流程图不同,活动图着重表现了系统的行为。最后再运用时序图来描述对象与对象之间传送消息的时间顺序,用来表示用例中的行为顺序。 3.1用户登录模块设计 用户登录模块是几乎每个系统必有的模块,图5为用户登录模块流程图。系统所有的用户都通过注册成为本系统的会员,然后进行登录,使用系统所提供的服务。此模块包括用户的登录、密码找回以及用户的申请。在用户登录中,系统根据用户输入的帐号、密码判断该用户是否合法,以及具有哪些操作权限,根据不同的权限返回包含不同模块的页面。系统管理员通过系统后台页面进入系统, 登录的用即可进行系统公告、用户信息管理、商品管理及拍卖管理等功能。没有户只能浏览本系统的内容。从系统安全的角度出发,用户的登录信息需要使用加密手段进行处理,以保证系统的安全。 11 北京XXX2011届毕业设计 开始 是 用户登录页面否 用户登录注册页面 检查用户登录信息是否已登录 否 是否一致完成注册页面 用户界面 图5 用户登录模块流程图 该模块主要功能是对用户的帐号、密码进行验证,以及进行新会员的注册和对密码丢失后的恢复等。 (1) 登录:用户在相应的用户名栏和密码栏填写自己的帐号和密码后,系统通 过对数据库的校对后自动跳转至index1页面,提供用户进行各项操作;若 校验失败则通过“error”页面提示用户登录失败,提示用户重新登录或是 注册会员。 (2) 注册:对于新用户所进行的操作。点击后进入注册页面进行注册。 (3) 修改用户密码:用户通过验证后,如感觉自己的密码设计太过简单,或者 是密码过于复杂,可以通过通过该功能键跳转到相应页面进行修改。用户 若是遗忘了密码,也可以在登录界面中,点击“忘了密码”键,通过密码 保护对密码进行修改操作。 12 北京XXX2011届毕业设计 在图6所描述的用户登录活动图中,用户首先启动系统,系统自动登录界面,用户输入用户名及密码,此时系统查询数据库检查用户所填信息是存在且正确,如果信息正确,则登录成功该项活动终止。如不符合登录失败,则返回输入密码。 用户登录 用户系统 登陆界面 启动系统 查询数据库 输入用户名 数据库 是否存在 -是输入密码 登陆成功 -否 登录失败 图6 用户登录模块活动图 13 北京XXX2011届毕业设计 图7为用户注册模块活动图,用户首先要进行用户注册,系统自动查询数据库检查信息是否完整,如信息完整,则自动将数据存入数据库中,该项活动终止。如不符合,用户需再次重新填写注册信息,直到信息完整为止。 用户注册 用户系统 登陆界面 启动系统 查询数据库 用户注册 数据库 信息是否完整 -是填写注册信息数据储存 -否 图7 用户注册模块活动图 14 北京XXX2011届毕业设计 图7为修改密码模块活动图,所描述的是用户修改密码过程,用户首先登录系统,系统进入用户界面,用户选择修改密码功能并输入新的密码,此时系统查询数据库并检查用户密码是存在,且填写符合规则。如果符合,则显示修改成功,系统进行数据储存。如不符合则修改失败,须重新输入新密码。 修改密码 用户系统 用户界面 登录系统 查询数据库 修改密码 数据库 密码是否符合规则 输入新密码-是 数据储存 -否 修改失败 图8 修改密码模块活动图 15 北京XXX2011届毕业设计 该用户登录模块顺序图描述的是用户登录系统时,按时间顺序的先后所进行的操作。在图9 用户登录模块顺序图中,分为3个对象,即登录页面、登录验证和用户信息。系统管理员和会员可以通过统一口径进行该项操作。用户先向“登录页面”对象发送登录请求消息,系统获取用户登录请求后,向“登录验证”对象发送用户信息。“登录验证”对象获取用户信息后,向“用户信息”对象发送获取用户的真实信息的请求。得到用户真实信息后,“登录验证”对象便对用户提供的信息进行验证,并发送验证结果到“登录界面”对象。 登陆页面登录验证用户信息 系统管理员会员 发送登录请求 发送登录请求 获取用户登录请求 发送用户信息获取用户真实信息 发送验证结果验证登录信息 显示验证结果 图9 用户登录模块顺序图 16 北京XXX2011届毕业设计 3.2购物模块设计 购物模块作为电子商务网站必备的也是最为根本的功能,应该是电子商务网站的核心功能模块。当用户进入网站首页后,就好比是进入商场的大厅。在这里有各种商品,除了各类商品的入口,还可以看到各种公告和特价商品,重要的是网站还为用户提供了商品搜索功能。当用单击了感兴趣商品后,可以查看他的详细信息,如果满意的话,可以单击将其加入购物车,如同现实世界中的购物篮一样,并且可以随时修改购物车中商品和数量,最后进行下订单。 而针对网站的管理员来说,不仅需要对网站添加不同种类的商品,还需要时常更新信息、价格和数量等信息。更重要的是,在收到用户的订单以后,进行核实订单内容,特别是订购人的收货地址等,确认完后就可以发货了。上面这个业务流程基本涵盖了购物模块的功能,为了实现它,还必须辅以其他功能,比如商品的管理、公告管理,以及用户管理等。图10通过流程图的形式将客户在购物模块中的操作流程进行了展现。 用户 查看公告 特价商品购物车 浏览商品 查询搜索商品无登陆新用户用户登录判断 用户登录用户注册 登录 订单查询 订单信息 图10 购物模块客户端流程图 用户通过对商品信息的浏览后,确定了所需订购的商品,点击“购买“按钮,商品的相关名称、所属分类等信息会自动添加至购物车模块中,再由用户选择购买的类型以及购买的数量,最后签署定单,订购操作完成 17 北京XXX2011届毕业设计 图11为管理端的购物模块流程图。管理员通过后台页面进行登录,在登陆成功后同样可以对要进行的操作进行选择,分为与购物模块直接相关的管理商品、管理订单功能以及辅助的管理公告、管理用户功能。 管理员 账号验证 N 验证成功 Y 管理商品管理公告 管理订单管理用户 图11 购物模块管理端流程图 18 北京XXX2011届毕业设计 用户在登陆以后,可以在页面浏览相关商品。通过点击感兴趣的商品,系统对数据库进行检索并显示商品信息。如果用户满意的话便可以将商品放入购物车,再进行数量的更改,点确定就能生成订单。之后系统会检查订单是否完整,并将完整的订单存入数据库,以便管理员管理。图12为购物模块活动图。 购物功能 用户系统 登陆成功数据库检索 浏览商品信息 显示商品信息 浏览记录 数据库 信息是否完整放入购物车 购买-是 数据储存 -否订单确认 图12 购物模块活动图 19 北京XXX2011届毕业设计 用户除了在页面上浏览意外,也可以根据类别或者商品关键字进行更为精确的搜索。首选选择商品的类别,并且输入关键字,然后点确认搜索。系统就会对数据库中符合搜索规则的数据进行检索并反映到查询结果页面上,用户可以根据浏览查询结果选择感兴趣的商品进行进一步浏览,大大减少了浏览时间。图13为商品搜索模块活动图。 商品搜索 用户系统 数据库检索 商品搜索数据库 -否是否有相关数据浏览记录 -是 查看商品信息显示商品信息 图13 商品搜索模块活动图 20 北京XXX2011届毕业设计 购物模块顺序图(图14)是按照用户购物时的先后顺序进行描绘的。本顺序根据系统需求分析,分为4个参与对象,分别是商品展示页面、商品信息、购物车、确认订单。首先用户选择好一件商品后,向数据库发送“查看商品信息”的请求消息,数据库进行相应反馈。之后用户可以把商品添加进购物车,并在购物车页面进行数量的修改并生成订单。用户在最终确定后,此订单报表正式生成有效数据,进入数据库内储存。 商品展示页面商品信息购物车确认订单 会员 选择商品 查看商品信息 添加到购物车 生成订单报表 下订单 图14 购物模块顺序图 3.3拍卖模块设计 网上拍卖系统是一个C2C模式下的电子商务系统,提供了一个网上拍卖的机会给买方和卖方。作为校园网二手商品交易,以拍卖作为交易模式应该是效果最好的。双方可以根据对商品的功能与需求尽可能的达到都满意的价格成交。本系统中设计的拍卖功能是采用卖家联系管理员,经审核后对拍卖商品上架拍卖的形式。这种方法可以有效保证拍卖商品的可信度,对拍卖的进行和后期管理都是有利的。 系统中的拍卖模块功能主要分为拍卖和竞拍两部分,管理员可以对拍品进行添加、修改、查看的操作,并且可以对拍卖的记录做查询。普通用户则可以对参加拍卖的商品进行竞拍、竞拍品查询等功能。 21 北京XXX2011届毕业设计 系统管理员 登记拍卖物品信息 开始拍卖 确定拍卖期限 NY拍卖期限内是否有人竞拍 流拍拍卖成功 图15 拍卖模块流程图 在拍卖模块流程图中,系统管理员首先在系统后台对拍卖品信息进行登记,填写物品信息,之后制定一个拍卖期限。如果一切信息符合规则,拍卖便启动了。在拍卖的过程中,系统管理员可以对拍卖的情况进行查询。直到拍卖期限,系统会根据竞标情况,对拍品的情况进行选择,没有拍卖成功的系统管理员可以修改,进行下一轮的拍卖。 22 北京XXX2011届毕业设计 在拍卖中,由卖方就会有买方。本系统中,用户通过在用户界面的拍卖物品选项可以浏览正在拍卖的商品。再点击查看具体的拍品信息后,可以对选定的目标进行竞价,竞价是多方同时进行的,所以在竞价以后,用户可以继续跟踪拍卖进度。直到拍卖结束,如果自己竞拍的价格没有被超过,就证明拍得了这件物品,此次拍卖也宣告成功。图16为拍卖模块的流程图。 用户 开始竞拍 浏览拍卖商品 拍卖结束查看拍品信息 选定竞拍目标 Y竞拍价是否被竞拍失败超过确定竞拍价格 N 竞拍成功 图16 竞拍模块流程图 23 北京XXX2011届毕业设计 在图17中比较完整的描述了拍卖双方在系统平台上进行的拍卖过程。由于 拍卖的特性,分为管理员和用户两点作为开端。 拍卖模块 管理员系统 拍卖管理页面 登记拍卖物品 输入拍卖物品信息生成拍卖信息 设定拍卖期限拍卖结束 是否有竞价 否 是拍卖成功数据库查询数据库 否 是 是否有更高竞价 生成竞拍信息 输入竞拍价格 查询拍品信息拍卖商品信息数据 浏览拍卖商品 拍卖商品展示页面 用户 图17 拍卖模块活动图 24 北京XXX2011届毕业设计 管理员首先对拍卖物品进行登记,通过在系统中拍卖管理页面输入详细的拍品信息和拍卖期限,系统自动生成拍卖信息,建立拍卖活动。用户通过浏览网页信息,对系统提出“查看拍品信息”请求,系统从数据库中调取相关数据。用户在了解拍品后,可以开始进行竞价,此竞价会及时对系统数据进行更新。对于用户来说,可以随时向系统查询是否有更高竞价出现,如果竞价被超越,可以选择再次竞价,直到拍卖结束或者竞价停止。当拍卖结束后,系统根据数据库信息判定是否有最终竞价者产生,如果有竞价者,拍卖宣告成功。如没有,管理员可以进行继续拍卖。 4.数据库设计 在确定了网站的主要功能和商务活动的主要规则后,下面对系统所用数据库进行设计。本系统采用SQL Server2000作为后台数据库。 4.1数据字典 通过分析,决定建立以下数据字典: 数据操作类: (1) 用户信息 用户ID,用户名,密码,真实姓名,性别,年龄,身份证号,家庭住址,电话号码,电子邮箱,邮政编码,备注 (2) 商品信息 商品ID、商品名称、商品零售价、商品批发价、商品相关图片信息、商品所属分类、商品数量、备注。 (3) 订单查询信息 ID、用户姓名、商品名称、商品数量、商品价格、订购时间、是否已签发、备注 动态配置类: (1) 商品查询信息 商品ID、商品名称、商品价格、商品分类 (2) 用户查询信息 用户名称、用户密码、联系人、联系单位、联系电话 25 北京XXX2011届毕业设计 4.2数据库基本表的设计 (1)用户信息表逻辑设计和具体代码 该表包括有用户ID,用户名,密码,真实姓名,性别,年龄,身份证号, 家庭住址,电话号码,电子邮箱,邮政编码,备注。 密码用户名真实姓名 用户ID性别 备注年龄用户 邮政编码身份证号 电子邮箱家庭住址电话号码 图18 用户信息E-R图 代码如下:CREATE TABLE [dbo].[users] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [pwd] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [realname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [sex] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [age] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [card] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [address] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL , [phone] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [email] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [code] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [type] [int] NULL ) ON [PRIMARY] 26 北京XXX2011届毕业设计 (2)管理员表的概念设计和具体代码 该表包括管理员ID,管理员名,密码,权限。 管理员ID 权限管理员名称管理员 密码 图19 管理员信息E-R图 代码如下CREATE TABLE [dbo].[admin] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [pwd] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [quanxian] [int] NULL ) ON [PRIMARY] (3)商品信息表的概念设计和具体代码 该表包括商品ID,商品名称,生产厂家,生产日期,规格,单价,库存量,产品介绍,产品类别,产品等级,图片。 商品ID 产品图片商品名称 产品等级生产厂家 商品 产品类别生产日期 产品介绍规格 库存量单价 图20 商品信息E-R图 CREATE TABLE [dbo].[wares] ( [id] [int] IDENTITY (1, 1) NOT NULL , 27 北京XXX2011届毕业设计 [name] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL , [manufacturer] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [date] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL , [standard] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [price] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [storage] [int] NULL , [brief] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL , [type] [int] NULL , [tate] [int] NULL [imgpath] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] (4)商品类别表的概念设计和具体代码 产品类别表包括商品类别ID,商品类名称。 类别ID商品类名称商品类别 图21 商品类别E-R图 CREATE TABLE [dbo].[tates] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] 28 北京XXX2011届毕业设计 (5)拍卖商品信息表的概念设计和具体代码 拍卖商品信息表包括拍卖商品ID,拍卖商品名称,生产厂商,生产日期,规格, 拍卖底价,数量,产品简介,商品类别,拍卖开始时间,拍卖结束时间,图片路 径。 图片路径拍卖商品ID 拍卖结束时间拍卖商品名称 拍卖开始时间生产厂家 拍卖商品 产品类别生产日期 产品简介规格 数量拍卖底价 图22 拍卖商品信息E-R图 CREATE TABLE [dbo].[auctionware] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [factory] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [dates] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [spec] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [baseprice] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [storage] [int] NULL , [intro] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL , [type] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [begintime] [datetime] NULL , [endtime] [datetime] NULL , [path] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] 29 北京XXX2011届毕业设计 5.系统实现 5.1模块功能详细介绍和部分功能代码 在这部分中,将详细的接受功能的实现和操作的信息。会有部分java代码片段,首先来介绍一些关键的名词。比如:string是定义字符串的关键字;result set是定义数据查询返回对象的关键字;而connection是定义数据连接对象的关键字。 (1)用户登录模块功能 模块详细介绍:用户登录,将用户名、密码信息录入到数据库的相应表中比较,如果都相同则完成登录,如果不同就返回“用户名或密码错误”的提示,利用JAVABEAN完成此功能。代码如下: public class UserLoginBean { Connection conn = null; Statement st = null; ResultSet rs = null; ArrayList al = new ArrayList(); public int login(String name, String pwd) { int temp = 0; (); conn = DBConn.getConn try { st = conn.createStatement(); rs = st.executeQuery("select * from users where name='" + name + "'"); if (rs.next()) { 30 北京XXX2011届毕业设计 String id = rs.getString("id"); String tname = rs.getString("name"); String tpwd = rs.getString("pwd"); if (pwd.equals(tpwd)) { temp = 1; al.add(id); al.add(tname); al.add(tpwd); } else { temp = 2; } } else { temp = 3; } } catch (SQLException e) { e.printStackTrace(); } finally { DBConn.close(conn, st, rs); } return temp; } public ArrayList getArrayLst() { return al; } } 31 北京XXX2011届毕业设计 (2)管理员登录模块 管理员登录,将管理员名、密码信息录入到数据库的相应表中比较,如果都相同则完成登录,如果不同就返回“用户名或密码错误”的提示,利用JAVABEAN完成此功能。代码如下: public class AdminLoginBean { Connection conn = null; Statement st = null; ResultSet rs = null; ArrayList al = new ArrayList(); public int login(String name,String pwd){ int temp = 0; conn = DBConn.getConn(); try { st = conn.createStatement(); rs = st.executeQuery("select * from admin where name='"+name+"'"); if(rs.next()){ String id = rs.getString("id"); String tname = rs.getString("name"); String tpwd = rs.getString("pwd"); if(pwd.equals(tpwd)){ temp = 1; al.add(id); al.add(tname); al.add(tpwd); }else{ temp = 2; } }else{ temp = 3; } 32 北京XXX2011届毕业设计 } catch (SQLException e) { e.printStackTrace(); } finally{ DBConn.close(conn,st,rs); } return temp; } public ArrayList getArrayLst(){ return al; } } (3)添加公告模块功能 更改公告功能是通过在添加公告页面中对公告名称和公告内容进行填写,形成一个信息项,统一提交,完成添加公告的过程,其代码如下: public class AddAfficheServlet extends HttpServlet { public AddAfficheServlet() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Validate vd = new Validate(); String name = vd.getUnicode(request.getParameter("name")); String content = vd.getUnicode(request.getParameter("content")); 33 北京XXX2011届毕业设计 String sql ="insert into affiche(name,content) values('"+name+"','"+content+"')"; InsertUpdateDelBean ib = new InsertUpdateDelBean(); int flag = ib.insertANDupdateANDdel(sql); String str = ""; if(flag == -1){ str = "/admin/addaffiche.jsp"; request.setAttribute("error", "1"); }else{ str = "/admin/affiche.jsp"; request.setAttribute("ok", "1"); } RequestDispatcher rd=request.getRequestDispatcher(str); rd.forward(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } public void init() throws ServletException { } } (4)购物车模块功能 购物车是电子商务网站必不可少的一个功能,属于一种有状态数据,也就是说购 物车的生命周期就是用户,除非这个用户离开,否则购物车的状态一直存在。购 物车的内容就是一条一条的订单数据,将这些数据存放在数据库的表中,等到客 户确认订单后,再将储存在上述位置的数据写入数据库中。其代码如下: public class ShoppingServlet extends HttpServlet { public ShoppingServlet() { super(); 34 北京XXX2011届毕业设计 } public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String bookId = request.getParameter("bookId");//获取books_id String m = request.getParameter("i"); String num = request.getParameter("num"+m);//获取购物车修改数量 String str = "";//mapping跳转时的值 String sql = "select * from books where id="+bookId;//sql语句 String[] args = {"id","name","author","publishing","number","price","storage","brief" ,"type","tate","sums","imgpath"}; String del = request.getParameter("del");//获取删除商品的记号 String remove = request.getParameter("remove");//获取清空购物车 的记号 HttpSession session = request.getSession(); ArrayList login = (ArrayList)session.getAttribute("login");// 获取用户信息 SelectBean ib = new SelectBean(); ArrayList al = ib.select(sql, args);//查询商品信息 int sum = 1;//购买一种商品的数量 if(login == null || login.size() == 0){ str = "/servlet/SessLoginServlet";//用户信息不存在跳到首页 }else{ str = "/qiantai/shopping.jsp";//跳到购物车页面 ArrayList shopping = (ArrayList)session.getAttribute("shopping");//获取购物车信息 if(bookId !=null && !bookId.equals("")){ ArrayList altem = (ArrayList)al.get(0); 35 北京XXX2011届毕业设计 if(shopping == null || shopping.size() == 0){//购物车为空时 ArrayList alShop = new ArrayList(); alShop.add(altem.get(0)); alShop.add(altem.get(1)); alShop.add(altem.get(5)); alShop.add(""+sum); shopping = new ArrayList(); shopping.add(alShop); }else{ boolean bool = true; for(int i = 0;i < shopping.size();i++){//查找是否有相同的商品,有的话数目加1 ArrayList alShop = (ArrayList)shopping.get(i); if(alShop.get(0).equals(bookId)){ sum = Integer.parseInt(alShop.get(3).toString())+sum; if(num != null && !num.equals("")){ sum = Integer.parseInt(num); } alShop.set(3,""+sum); bool = false; break; } } if(bool){//没有的话,加入一个新商品 ArrayList alShop = new ArrayList(); alShop.add(altem.get(0)); alShop.add(altem.get(1)); alShop.add(altem.get(5)); alShop.add(""+sum); shopping.add(alShop); } } 36 北京XXX2011届毕业设计 } if(del != null && !del.equals("") && shopping !=null && shopping.size()!= 0){ shopping.remove(Integer.parseInt(del));//删除商品 } session.setAttribute("shopping",shopping); if(remove != null && !remove.equals("") && session.getAttribute("shopping") != null && !session.getAttribute("shopping").equals("")){ session.removeAttribute("shopping");//清空购物车 } } RequestDispatcher rd=request.getRequestDispatcher(str); rd.forward(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } public void init() throws ServletException { } } 37 北京XXX2011届毕业设计 5.2网站界面设计 网站界面使用户和互联网产生接触的第一个窗口,对于网站内容、商品的访问量、注册量甚至成本都有至关重要的影响。本系统本着实用性的原则,做到以主页面作为根页面,包括导航菜单,公告信息,商品预览,用户登录等最基本的功能。在此基础上,主页与分页面界面统一、友好,方便用户操作。 图23 网站首页 图24 公告浏览页面 38 北京XXX2011届毕业设计 图25 用户中心页面 图26 用户注册页面 39 北京XXX2011届毕业设计 图27 购物车页面 (2)系统后台页面 图28 拍卖物品页面 图29 商品搜索页面 40 北京XXX2011届毕业设计 图30 系统后台登陆界面 41 北京XXX2011届毕业设计 6.结束语 人类进入21世纪,电子商务伴随着IT的成熟,逐渐发展壮大,成为网络经济的核心。计算机、网络通信、信息技术、支付技术、安全技术的发展以及计算机的普及与网络应用等基础设施建设为电子商务的应用提供硬件支持与安全保障,是电子商务发展的硬件基础;电子商务法的制定与发布为电子商务的发展提供了法律保障,成为电子商务发展的软件基础。在电子商务的发展过程中,人们意识到在线购物的无地域界限、安全、方便快捷及其价格优势。基础环境的成熟与需求欲望的增长将推动电子商务与商务网站的建设不断发展,本文通过对校园网上跳蚤市场的设计来探寻校园网资源的应用与电子商务网站建设,是具有重要的社会意义与参考价值的。 校园网上跳蚤市场的开发是针对现在广大高校校园网开展的现状,选择当下主流开发技术JSP2.0为前端开发工具,SQL server 2000作为后台数据库。在本次开发系统过程中,让我深刻的认识到系统分析和系统设计在系统开发过程中的重要性。本片论文我尝试运用统一建模语言(Unified Modeling Lanaguage,UML)对系统进行分析和设计,作为基于面向对象开发的通用图形化建模语言,与传统的面向数据的分析方法相比,UML定义良好,易于表达、功能强大且普遍适用,我认为它最大的优点在于不仅支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。我从整个实践过程中受益匪浅,尤其是还已经能初步掌握了Microsoft Office Visio 2010的关于UML图形的制作。 通过毕业设计的过程,我对系统的开发和完善有了更加科学的认识,相信这对日后的学习和研究一定会有帮助。由于时间和知识技术水平的局限,系统还有许多可以扩展的地方。由于电子商务的整个商务系统由网站业务系统、认证中心、支付网关和客户终端系统四个基本元素组成。本系统并没有实现网上付费的功能,但根据系统的需求分析,由于网站面向的群体为在校师生,所以再付款方面可以选择见面交易的方式,既安全还省去了物流的成本,极大地保证了交易双方的利益。 另外此次论文的撰写,是对我大学四年的一个检测和总结,使我对系统的开发不再处于理论方面的浅认识,很多东西是书本上学不到的。不过由于时间和知识水平等原因所限,文章写的不够完善、透彻,系统方面有还存在诸多的问题需进一步完善,不过还是在很多方面有了大大的提高。 42 北京XXX2011届毕业设计 参考文献 [1] 唐爱国,杭志,王建明.Web 2.0 动态网站开发-JSP技术详解与应用实践 北京:清华大学出版社,2009.1 [2] 明日科技,卢翰,王国辉.JSP项目开发案例全程实录 北京:清华大学出版社,2011.1 [3] 王晓敏等(信息系统分析与设计(第3版)(北京:清华大学出版社,2006(4 [4] 张新曼(Jsp网络编程从入门到精通(北京:人民邮电出版社,2007(2 [5] 周桓,王殊宇(Jsp项目开发全程实录丛书(北京:清华大学出版社,2008(6 [6] 孙鑫.SERVLET / JSP 深入详解:基于 Tomcat 的 Web 开发[M].北京:电子工业出版社.2008.8 [7] 汪大乐. Java Web 开发技术详解:JSP + Ajax + Struts[M].北京:科学出版社.2008.8 [8] 周桓,王殊宇等. JSP 项目开发全程实录[M].北京: 清华大学出版社.2008.6 [4] 彭一明,张丽伟,刘子乾.挑战 JSP & SERVLET Web 2.0 应用开发[M].北京:机械工业出版社.2008.6 [9] 程伟,汪孝宜.开发者突击:JSP 网络开发经典模块实现全集[M].北京:电子工业出版社.2008.3 [10] 蒙祖强,龚涛等.JSP 程序员成长攻略[M].北京: 中国水利水电出版社.2008.2 [11] 郝安林,王伟平,张明亮.JSP 从入门到精通[M].北京:电子工业出版社.2008.1 [12] 张亚飞.JSP 开发王[M].北京:电子工业出版社.2008.7 [13] (美)乔治.谢尔(管理信息系统[M] 北京:电子工业出版社,2002( [14] (美)Abraham Silberschat & Henry F.Korth & S.Sudarshan. Adamski(Database System Concepts, Fourth Edition. (数据库系统概念(原书第4版))[M](北京:机械工业出版社,2003. [15] Robert Vieira.SQL Server 2005编程入门经典(第2版). 北京:清华大学出版社,2007. 43 北京XXX2011届毕业设计 外文文献及翻译 一、外文原文 This article discusses simple approaches and best practices that, when used correctly, facilitate Java Server Pages (JSP) development. These tips ensure reusable and easily maintainable JSP, JSP that allow developers to focus on their programming strengths. (3,000 words; November 30, 2001) By Dustin Marx Java Server Pages (JSP) technology is an extension of Java SERVLET technology and combines HTML and Java code into a single file. While Java SERVLET technology focuses on Java classes capable of generating HTML output with PrintWriter.println() statements, JSP technology abstracts this concept to a higher level. With Java Server Pages, a Web developer can write static HTML pages and simply add Java code in those sections of the page that need to be dynamically generated. While this flexibility enables rapid development of simple Web applications, it can be abused, resulting in unnecessarily complex applications that are difficult to maintain, reuse, and enhance. To avoid needlessly complex applications, follow the practices I present in this article: 1. Separate HTML from Java 2. Place business logic in JavaBeans 3. Factor general behavior out of custom tag handler classes 4. Favor HTML in Java handler classes over Java in JSP 5. Use an appropriate inclusion mechanism 6. Use a JSP template mechanism 7. Use style sheets 8. Use the MVC pattern 9. Use available custom tag libraries 10. Determine the appropriate level of XML compliance 11. Use JSP comments in most cases 12. Follow HTML best practices 13. Utilize the JSP exception mechanism 44 北京XXX2011届毕业设计 These tips will help you write JSP that are reusable and easy to maintain. Separate HTML from Java It can be tempting to throw all Java and HTML code necessary for a Webpage into a single JSP file. In simple system development, such an approach makes it easy for someone new to the system to locate all relevant code in one place and understand how it all interacts. However, this approach becomes burdensome and costly when the application grows more complex and more developers become involved. Combining HTML and Java in the same source code can make the code significantly less readable. To enhance software readability, developers often use indentation; but mixing HTML and Java script lets in the same file can make useful indentation extremely difficult to maintain. Many Web development methodologies and architectures now emphasize the separation of HTML from Java code so different developers can focus on their strengths. Properly separating Java and HTML, including HTML-like JSP tags and custom tags, allows Web designers and HTML coders to work on the HTML (presentation) aspects, while Java developers work on the application’s Java (processing logic) portions. Java developers focus on business logic as they implement the behavior behind the custom tags; Web designers then use these custom tags just as they use ordinary HTML tags. Applications with Java properly separated from HTML are more reusable because the Java components are not tied to a Web browser and can be used by other parts of the application. In addition, maintainability is enhanced because of the increased modularization that comes from Java/HTML separation. Placing business logic in JavaBeans also promotes stronger applications. I’ll explain how next. Place business logic in JavaBeans Java code included directly inside a JSP is not as readily accessible to other JSP as Java code contained within a JAVABEAN. Common behavior and business logic placed in JavaBeans can not only be used by other JSP but also by other portions of the application. That is because JavaBeans 45 北京XXX2011届毕业设计 are merely Java classes that satisfy some basic conventions (such as a constructor with no arguments and public get/set methods for private data members) and can be used as any other Java class. Note that Enterprise JavaBeans (EJB) are also useful for storing behaviors and data common to all components of the application. Factor general behavior out of custom tag handler classes Java classes known as custom tag handlers implement custom tags. Unlike JavaBeans, custom tag handler classes are not readily used like ordinary Java utility classes. Instead, custom tag handler classes implement specific interfaces -- or extend classes that provide these interfaces? basic implementations. Because they are not readily reused outside JSP, custom tag handlers should contain only specific behavior that would not be useful outside that custom tag -- that is, outside the JSP. Custom tags often require support for common behaviors or business logic and can utilize JavaBeans or EJB that perform those common behaviors. Favor HTML in Java handler classes over Java in JSP Sometimes cleanly separating HTML, JSP tags, and HTML-like custom tags from Java require unnecessarily convoluted code. In these cases, you either include Java script lets and expressions in the JSP or put some HTML code in the Java tag handler class. I’d rather see a small amount of HTML code in the Java class than see Java, such as script lets and expressions, in the JSP. Since custom tag handlers are specific to the custom tags they implement (and not reusable outside JSP), placing necessary HTML there is not troublesome. Sun’s Java 2 Platform, Enterprise Edition (J2EE) Blueprints documentation discusses this issue further. There are exceptions to this standard: if including one or two lines of Java code as script lets in the JSP solves the same problem that would require many more lines of HTML in the Java handler class, allowing Java code to exist in the JSP page might be prudent. Use an appropriate inclusion mechanism It is rarely good design to reproduce code commonly used by different application pieces each time another piece of that application needs that 46 北京XXX2011届毕业设计 functionality. Factoring common JSP or HTML code out of multiple pages and into a single file improves maintainability (you need to make changes in only one location) and reusability. Two JSP include mechanisms reduce code redundancy and promote reusability; to ensure that you use the appropriate include mechanism, it is important to know the differences between the two. Generally, I use the include directive unless I can justify a need for the include action. Question 7 in the Blueprints? "Web Tier" section provides a good resource for understanding the differences between the two include mechanisms and determining which to use in a particular situation. Include directive An Asp’s include directive includes the content of a specified file in that JSP. Use the include mechanism for situations when text, such as ASCII or HTML, needs to be included in multiple JSP. For example, I commonly use the include directive to include footer information, such as company name or copyright date, on every JSP in a company’s application. Since you include the content of any file specified by the include directive in the calling JSP before it compiles, variables and other values specified in the calling JSP can also be utilized in the included content. However, I try not to rely on variables defined in the calling JSP, since this dependency reduces the included file’s reusability. Include action The include action executes the specified JSP first and then places the generated response in the calling JSP. Because the include action includes the generated response rather than the source content itself, variables and other values specified in the calling JSP are not available to the page included with the include action. One disadvantage of the include action as currently implemented by the JSP implementations with which I am familiar relates to the flush="true" attribute. In the JSP implementations I have used, this attribute is required and must be set to true. The true value indicates that the buffer will always flush before a target page specified by the include action executes. This can prove problematic if the forward 47 北京XXX2011届毕业设计 mechanism is invoked either explicitly or implicitly later in the JSP. In the recently released JSP specification (1.2), however, the include action’s flush attribute can be set to false. Tomcat 4.0 provides a reference implementation of this specification and supports this new include action argument. Use a JSP template mechanism A template mechanism allows for a common file to control Webpage, or JSP, layout. Then, when you want to change the layout, you need to modify only one file, and all the other pages will reflect the layout change. This doesn’t just make for more maintainable code; using templates to control layout also makes WebPages more aesthetically pleasing to users who see consistent layouts for all an application’s pages. I use Struts? custom tag template library as a template mechanism. David Geary’s article "JSP Templates" provides a good starting point for looking at using templates with your JSP. Use style sheets Just as templates enable developers to place layout control in a single location, style sheets enable developers to place appearance control in a single location. I use Cascading Style Sheets (CSS) to control such items as font families, font sizes, and table characteristics. Like templates, style sheets allow the developer to make changes in one location; those changes immediately reflect on all appropriate pages, resulting in increased maintainability and consistent appearance to users. Use the MVC pattern While other design patterns can be used effectively with JSP, I often use the Model-View-Controller (MVC) architecture with JSP technology. MVC enables the development of applications that are easier to create, test, maintain, and enhance. In JSP terminology, implementation of an MVC architecture is often referred to as Model 2 (from an early JSP specification). The J2EE Blueprints samples are based on MVC. See "E++: A Pattern Language for J2EE Applications, Part 1" by Bin Yang, and "Understanding Java Server Pages Model 2 Architecture" by Gavin Seashore, for more information on JSP and MVC. 48 北京XXX2011届毕业设计 Struts Struts is an open source MVC implementation (it’s a Jakarta subproject available through the Apache license) that provides base controller functionality that you can extend and enhance in your own applications. The base controller is implemented as a Java SERVLET, and its configuration is controlled by an XML file called “struts-config.xml”. When a Struts-based JSP Web application is created correctly, most changes in flow control are made in the “struts-config.xml” file rather than in the code itself. Implementing an application that is MVC-compliant involves extra initial effort, but the investment in time up front is worth the rewards of more maintainable and reusable code. Plus, Struts significantly reduces the preliminary work involved in implementing MVC. Besides supporting MVC implementations, Struts also provides some valuable custom tag libraries, such as the template tag library mentioned previously. The logic tag library has custom tags for iteration and tags for if-then-else structures. The HTML tag library features many useful custom tags, including custom tags for FORM tags and form item tags used in Struts? form handling and validation. See the Struts documentation for more details on these libraries and other Struts custom tag libraries. I’ll discuss the advantages of using these libraries next. Use available custom tag libraries Why should developers spend time reinventing the wheel and worrying about testing and debugging when custom tag libraries are readily available for many different purposes? Some vendors provide custom tag libraries to their customers for free or for individual purchase, but many custom tags can be found online. Resources provide a good starting point for locating potentially useful tag libraries. While these third-party custom tag libraries occasionally have bugs, most likely such problems will be discovered, since many developers use these libraries and test them in their own applications. Also, many custom tags are open source, so you can edit them to meet your needs. I find it well worth my time to keep informed of available custom tags, since these libraries often provide functionality common to most Web 49 北京XXX2011届毕业设计 applications. While learning about available custom tag libraries requires a small time investment, reusing already-available custom tags saves the time of writing, testing, and debugging my own custom tags. As mentioned above, many tag libraries are also open source; in these cases, I can readily adapt general behavior to my specific project’s situation. Determine the appropriate level of XML compliance Most JSP developers use shorthand syntax for JSP tags rather than XML syntax. This is partially evidenced by Sun’s Java Server Pages Syntax Reference, which lists only the tags? shorthand form. An advantage to using a 100 percent XML-compliant JSP, including syntax for JSP tags, is that XML validation tools can validate the JSP. XML tools can validate the JSP against a DTD (document type definition) that enforces standard JSP syntax rules. However, at present writing and maintaining JSP with XML tag syntax often involves far more effort than the rewards justify. As tools are developed that automatically convert shorthand syntax to XML syntax, the benefits of XML-compliant JSP will likely make the reduced effort worthwhile. I have waited for the JSP specification and its implementations to mature in relation to XML-compliant JSP before fully utilizing XML-compliant tags. See the sidebar below, "XML in the JSP Specifications," for more information on how XML compliance is handled in the latest JSP specification. I am not implying that you cannot currently use XML with Java Server Pages technology. I simply prefer to wait for better tools to manage the JSP-to-XML mapping as outlined in the 1.2 specification before pursuing XML-compliant JSP (also called JSP documents). There are, however, other ways the two technologies can be used together. See Resources for articles on using XML with JSP. Be sure to keep abreast of the latest JSP specification and the tools your preferred vendors provide that implement that spec’s new features, such as JSP-to-XML mapping. Apache provides Tomcat 4.0 as a reference implementation of the JSP 1.2 Specification. Use JSP comments in most cases 50 北京XXX2011届毕业设计 Appropriate commenting seems to challenge software developers. JSP, like other types of code, should include comments that describe complex or extraordinary functionality, the pages? purpose, and other general information typically commented out in source code. Since JSP allow developers to intermix Java, JSP tags, and HTML tags in the same page, there are multiple ways to comment a JSP page. Developers should carefully consider which type of comment to employ in the page. HTML comments will be viewable in the compiled JSP’s HTML source code, and both major browsers make viewing this source easy. JSP comments, on the other hand, are not placed in the HTML document created by the JSP compilation process. These comments cannot be viewed as part of the page’s source through the browser, and they do not increase the size of the rendered page’s generated source. Java comments can also occur in a JSP inside Java script let sections. These are not viewable in the browser either, but including Java comments in the JSP page violates the principle of separating Java from the HTML. Code comments are usually meant for developers who write and maintain code. Therefore, use JSP comments unless there is a compelling reason to have the comments display in the browser upon request. Note that you should not place sensitive data in JSP source code, not even inside JSP comments. Although the text inside JSP comments is not compiled into the source used to render the Webpage, Web servers might allow users to view JSP source code. Place sensitive data in a database, where access to the data can be controlled and monitored using triggers or other database mechanisms. Follow HTML best practices When Java is factored out of the JSP and into JavaBeans and custom tag handlers, the JSP consists mostly of JSP tags, including custom tags, and HTML tags. To make the JSP easier to understand and maintain, follow best practices related to HTML development. One HTML best practice I follow: include closing tags recommended by the HTML specification even when the browsers do not require them. Most HTML generation tools will match opening tags with corresponding closing tags, but hand-typed HTML documents often lack closing tags (note that 51 北京XXX2011届毕业设计 there is a small set of HTML tags that lack closing tags). Browsers usually render the page despite missing closing tags, but don’t count on the browser to work correctly when standards are violated. Some missing closing tags, such as , can dramatically affect a page’s rendering in the browser. In addition, you should avoid using deprecated HTML tags, and use lowercase letters for all HTML tags. The W3C (World Wide Web Consortium) has some resources related to HTML best practices and validation. Utilize the JSP exception mechanism While a thrown exception’s stack trace proves extremely useful for developers when debugging their code, it is rarely desirable to share an entire exception stack trace with the software’s users. Lengthy stack traces are not aesthetically pleasing and can increase security risks by exposing information that does not need to be released. JSP allow developers to catch and handle exceptions in the code, resulting in more secure and aesthetically pleasing exception handling. See Resources for details on the mechanics of JSP exception handling. Exception information is more useful if information besides the stack trace is included. JSP can use session variables to store information about the current page and current operation being performed. Then, if an exception does occur, the exception page will be called; it will have access to both the thrown exception and the information about the original page that caused the exception. The exception page can utilize underlying Java code, in JavaBeans or EJB, to store in the database the complete exception information, related session information, and the exception’s date and time. To reduce the unsightly error messages printed to the screen and improve security, the exception page need only print out a simple error message and perhaps an identifying number that allows developers to locate more detailed exception information in the database. For aesthetic and security reasons, I prefer storing most of the exception information in a database or flat file rather than printing it all to the screen. Storing the exception information in a database or flat file also allows the information to be persisted even when a user exits the application. Note 52 北京XXX2011届毕业设计 that during development you should print full exception information to the screen for regular testing and debugging. Now start developing JSP If abused, many JSP conveniences can lead to unnecessary complexity. This article summarizes some JSP practices that allow developers to take advantage of these conveniences without triggering unnecessary complexity. By following the best practices discussed here, you will increase your software’s maintainability and reusability as well as its aesthetic qualities. Situations might arise where the overhead of some of these recommended JSP practices is not worth the cost, such as in extremely simple applications. However, my experience is that even the simplest applications often evolve into more complex systems. In most cases, the sooner you follow best practices such as these. 二、中文翻译 JSP技术是SERVLET技术的扩展,结合html、java代码于一个文件。Java SERVLET技术关注于利用PrintWriter.println()语句产生html输出的java类, JSP将这个概念抽象到一个更高的层次。使用JSP,web开发者可以写静态的html 和将java代码片段加入到需要动态产生的页面中,从而,这种灵活的技术使简 单web应用的快速开发成为可能。然而它能被滥用,从而形成难以维护、重用和 改进的不必要的复杂的应用软件。 遵循以下提示的技巧可以避免这种不必要的复杂应用。 (1) 分离html和java (2) 将业务逻辑放在java Bean中 (3) 从标签定制管理器类中分离出常用行为 (4) 较之java代码在JSP中,更倾向于html在java管理器类中 (5) 使用适当的包含机制 (6) 使用JSP模版机制 (7) 使用CSS样式表 (8) 使用MVC模式 (9) 使用有效的标签定制库。 (10) 确定适当的xml依从度 (11) 尽可能多使用JSP注释 (12) 遵循html最佳实践 53 北京XXX2011届毕业设计 (13) 利用JSP异常机制 这些可帮助你写出可重用、易维护的JSP 1.分离html和java 将一个web页的所有必须的java、html代码放入一个JSP文件中是诱人的。这种方法使初学者定位相关联的代码和理解它们如何相互作用变的容易。然而,当应用变的更加复杂、开发者变的更加棘手时,这样方式将变的更加繁重和昂贵。 结合html和java在同一的代码来源使程序变的非常不可读。为增强可读性,很多开发者使用缩排格式,但是混合html和java片段的文件使有益的缩排格式变的极其难以维护。 许多web开发方法和机制强调html和java代码的分离,从而不同的开发者可以将精力集中在他们擅长的方面。适当地将java代码和包括JSP标签、定制标签在内的html分离,可以使web设计者、html编写者工作在html(表述)方面,而java开发者工作在应用的逻辑处理部分。当Java开发者实现JSP定制标签后的行为时关注的是业务逻辑,web设计者则像使用普通html标签一样使用这些定制标签。 适当地将java代码从html中分离的应用会更可重用,因为java组件并不约束于特定浏览器,同时可以运用到应用软件的其他部分。与此同时,源起于java/html分离而增强的模块化也使应用的可维护性得到了提高。 2.将业务逻辑放在JavaBeans中 直接包含在JSP中的java代码并不像包含在JavaBeans中的java代码那样容易被其他JSP页面理解,通用行为和业务逻辑放在JavaBeans中不仅可以被其它JSP,也可以被应用的其它部分使用,这是因为JavaBeans仅仅是满足一些基本约定(比如不含参数的构造器,为private类属性设置set/get方法)的java类,也能作为任意其它类使用。值得注意的是,EJB在封装针对应用中所有组件通用的行为和数据时也是有用的。 3.从标签定制管理器类中分离出常用行为 作为定制标签管理器类的java类的实现定制标签,并不像JavaBeans,它不能如普通java工具类一样易于使用,而是,定制标签管理器类实现特定的接口或继承提供这些接口基本实现的类。由于它们不易于在JSP外使用,定制标签管理器类应当仅包含那些不能在定制标签之外、JSP之外使用的特定行为。定制标签常常需要针对通用行为和业务逻辑的支撑,并利用提供通用行为的JavaBeans和EJB 4.较之java代码在JSP中,更倾向于html在java管理器类中 54 北京XXX2011届毕业设计 有时从java中分离html、JSP标签和如何定制标签的html会需要不必要的令人费解的代码,基于此,你要么将java片段和表述放入JSP中,要么将html代码放入java标签管理器类。 较之看到在JSP中作为脚本的java,我更愿意看到在java类中的一个小部分html代码。由于定制标签管理器针对它们所实现的定制标签是特定的(同时也不能在JSP之外使用),放入一些html代码不会有什么麻烦,SUN的J2EE蓝皮书对此有更深入的讨论。 对此标准也有例外:如果在JSP中包含一行或两行java代码片段和在java管理器类中包含许多行html代码解决的问题一样,那么允许在JSP中存在java代码应该是明智的。 5.使用适当的包含机制 包含机制在代码重用方面是少有的好的设计。从多个页面中分离出通用的JSP和html代码放入一个文件可以提高可维护性(仅需要在一处改变)和可重用性。 有两种包含机制缩小了代码冗余促进了代码重用。为确保能够使用适当的包含机制,理解它们二者间的不同是重要的。除非我可以证明需要include 动作是正当的,一般地情况下我使用include指令。在蓝皮书“web 层”部分中的第七个问题,对理解两种包含机制的不同和确定在特定情况使用哪一种提供了很好的资源。 6.使用JSP模版机制 一个模版机制允许一个公用的文件来控制web页、JSP、页面布局。于是,当你想改变页面布局时,你仅仅需要修改一个文件,所有其它的页面将反映出页面布局的改变。这不仅是使代码更加具有可维护性,页面布局模版机制对那些看到所有应用软件页面都协调一致的用户来说,使web页面显得更加美观和友好。 我使用作为一种模版机制的Struts的定制标签模版库,David Geary的文章《JSP Templates》对考虑在你的JSP中使用模版机制提供一个很好的起点。 7.使用CSS样式表 正如模版可以使开发者将页面布局控制放于一处,样式表可以使开发者将外观控制放于一处。我使用CSS样式表来控制诸如字体格式、尺寸,表特征等项目。像模版一样,样式表允许开发者在一处改变,这些改变会立刻映射到所有外观页面,从而促进可维护性和给用户一致的外观。 8.使用MVC设计模式 当然、其它设计模式可以在JSP中有效的使用,而我经常使用模型?视图?控制器(MVC)的体系机构。MVC可以使应用的开发的建立、测试、维护、改进 55 北京XXX2011届毕业设计 变得更为容易。在JSP术语中,MVC体系结构的现实经常被作为Model2(来自早期的JSP规范)提起。J2EE蓝皮书的例子就是基于MVC模式的。 阅读Bin Yang的《E++: A Pattern Language for J2EE Applications, Part 1》和Gavin Seashore的《Understanding Java Server Pages Model 2 Architecture》得到JSP和MVC的更多信息。 Struts是一个开源的MVC实现,它提供了你可在应用中继承、修改的基本控制器的功能。基本控制器是作为一个java SERVLET的实现,它的配置是由一个叫struts-configxml的文件控制。当一个基于Struts的JSP Web应用建立时,大多数的改动是在struts-configxml文件中的流程控制,而非它本身代码。 实现一个适应MVC模式的应用,需要初期额外的工作。但是,这个前期的投资可以得到更多“可重用、可维护”代码的值得的回报。再者,Struts对实现MVC初期工作的简化也是值得注意的。 除了提供MVC的实现,Struts还提供了一些有价值的定制标签库,比如前面提到的模版标签库。逻辑标签库包含有迭代循环、if-then-else结构的定制标签。HTML标签库是许多有价值定制标签的代表,包括实现form和用于Struts form 处理、效验的定制标签。阅读Struts文档可获得有关这些标签库和其它标签库的更详细的信息。接下来,讨论使用这些标签库的优势。 9.使用有效的标签定制库 当标签库可以容易、有效地使用在多种用途时,开发者为什么还要为重复开发、担心测试、调式而花费时间呢,一些卖方以免费或单独购买的方式为他们的客户提供定制标签。但是很多定制标签库可以在网上找到,这些资源为找到一个潜在的有用的标签库提供一个很好的起点。 当然这些第三方标签库有时候含有bug,自许多开发者在他们的应用开发中使用、测试这些标签时,绝大多数这样的问题极有可能被发现,同时很多定制标签是开源的,你可以根据自己的需要修改它们。 我发现花时间广泛了解定制标签是值得的,因为这些标签库通常提供了大多数web应用的通用功能,而学习这些标签只需要很少的时间投资,重用已有、有效的定制标签可以节约编写、调试、测试自己的定制标签的时间。正如以上所说,许多标签库是开源,由于这些原因,我可以很容易的使通用的行为适应我特定项目的情况。 10.确定适当的xml依从度 绝大多数JSP开发者使用JSP标签的速记语法而非xml语法。这个已在Sun的JSP语法参考中(列出仅是标签的速记形式)得到部分证明。 56 北京XXX2011届毕业设计 使用包括JSP标签在内的100% xml依从度JSP的优势是,xml验证工具可以验证JSP文件,以一个执行JSP基本语法规则的DTD为标准。 不过,在当前写或维护一个xml标签语法的JSP需要额外更多的工作,当把速记语法自动地转化为xml语法的工具被开发出来时,使用xml形式JSP的益处将使这些工作减少。我期待着在完全使用xml形式的标签之前,与xml形式JSP有关的JSP规范和实现能能够成熟。你可以阅读《XML in the JSP Specifications》来获得有关xml依从是如何在最新的JSP规范中运用的更多的信息。 我并不是暗示你不能在当前的JSP技术中使用xml,我只不过是期待在1.2版的规范中有更好的处理JSP-xml映射的工具。不过,有其它的方式可以将两种技术在一起运用,可以阅读有关使用xml和JSP的文章资源。 11.尽可能多使用JSP注释 适当的注释好象是对软件开发者的挑战。JSP或其它代码理应包含注释以描述复杂特别的功能、页面用途和其它基本信息。 由于JSP允许开发者将java、JSP标签、html标签混合在一个页面中,所以就有了多种注释JSP页面的方法,开发者应谨慎地考虑使用哪一种注释方式。Html注释在经由JSP编译而成的html源代码中是可见的,同时浏览器是我们很容易地看到这些。另一方面,JSP注释并不放在由JSP编译过程创建的html文档中,这些注释不能作为页面源代码的一部分通过浏览器看到。Java注释也可以出现在JSP文件中的java程序段中,它在浏览器中也是不可见的。但是,在JSP中包含java注释违反了分离java、html代码的原则。 注释通常是对写或维护代码的开发者才有意义的。因此,除非有非得需要在浏览器中显示出来得情况,应该使用JSP注释。 12.遵循html最佳实践 当java从JSP中分解出放入JavaBeans和定制标签管理器中时,JSP大部分由JSP标签(包括定制标签)和html标签组成。遵循和html开发有关的最佳实践方法以使JSP更易于理解和维护。 W3C有一些有关HTML最佳实践和验证的资源可参阅。 13.使用JSP异常机制 对调试代码的开发者来说,一个抛出的异常堆栈痕迹是极其重要的,而和软件使用者共享一个完整的异常堆栈信息是极其少有的。冗长的堆栈信息是不美观的,同时由于暴漏了不必要释放的信息而增加了安全风险。JSP允许开发者在代码中捕获和处理异常。 57 北京XXX2011届毕业设计 除堆栈痕迹外的异常信息更为有用。JSP能使用一个session变量保存当前正在执行的页面和操作的信息。接着,若一个异常产生,异常页面将被调用,它将同时访问抛出的异常信息和产生异常的起始页面的信息。异常页面可以使用接下来的在JavaBeans或EJB中的java代码将完全的异常信息、会话信息、异常的日期时间信息存入数据库中。 减少可见的错误信息打印到屏幕同时提高安全性。异常页面仅仅打印出简单的错误信息和可能的鉴别码,而能使开发出在数据库中找到更详细的异常信息。因为美观和安全的理由,我更愿意将绝大部分的异常信息保存进数据库或平面文件而非全部打印到屏幕上。这样同时可以使异常持续存在,甚至是在用户退出应用程序时。注意,在开发期间为了正常的测试和调试,您应当在屏幕上打印出全部的异常信息。 58 北京XXX2011届毕业设计 致 谢 毕业设计工作接近尾声,在这马上就要离开学习了四年的母校的时候,我不禁想要对我身边的老师和同学们表示感谢。他们不仅仅是在毕业设计之中给了我真诚的帮助,更在这整个难忘的四年中,在我遇到困难的时候对我进行不倦的支持,当我经受挫折的时候为我真心的鼓励。在此我对你们所有的人表示感谢。 在这一个学期的毕业设计工作中,我特别要感谢我的指导老师朱杰老师。本论文历经选题、撰写开题报告、一稿和二稿、今定稿,在将近半年的时间里,感谢我的指导老师朱杰老师,在每个环节给我提出珍贵的建议。尤其在一稿二稿的修改过程中更是严谨、细心,并耐心的听我询问和给予帮助,使我的论文能如期并合格的完成。毕业设计才是对大学四年所学知识的综合运用和一次深刻的总结。将理论知识真正运用到实际的工作设计或者程序开发之中,机会难得,值得回忆。 在此还要感谢那些在论文撰写和修改过程中一直帮助我的同学和老师,感谢大家耐心的指导和帮助,同时祝福在这四年来一直帮助我、关心我、支持我的人们。 再次由衷感谢答辩组的各位老师对学生的指导和教诲,我也在努力的积蓄着力量,尽自己的微薄之力回报母校的培育之情,争取使自己的人生对社会产生些许积极的价值~ 59 北京XXX2011届毕业设计 封底(由教务处统一提供) 60
本文档为【电子商务专业毕业设计-校园网上跳蚤市场系统分析与设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_574951
暂无简介~
格式:doc
大小:264KB
软件:Word
页数:78
分类:企业经营
上传时间:2017-09-07
浏览量:26