第一章 绪论
随着大学生消费能力的日益增强,一些已经买回来的东西由于使用相对较少而闲置在宿舍变得无味。但对于其他学生,这些东西可能有相当大的价值。甚至一些颇有价值的东西被随意丢弃,不仅对资源产生浪费,而且还加剧了环境污染。目前,各大高校都已经建立了自己的校园网,而且“校园一卡通”在校内也是比较有正面反响的。对此,通过建立一个二手物品交易平台,然后不定期放置同学的闲置物品信息,这是一种对校园二手物品回收的良好解决方案。当然每个同学有闲置的物品可自行登陆此平台进行闲置物品的上架。基于互联网上成熟的校园二手交易平台的建设,互联网技术的发展,方便学生集中处理自身利用率低的闲置物品,这就可以通过安全标准化的交换或销售平台,购买师生的闲置物品。目前,生态环境的保护是我国面临的一个非常艰巨的任务,建立环境保护和生态环境的正确的道德意识,不仅是大学生所需要做到的,也是公民道德建设的重要内容。在环保实践中,大学生是最活跃的执行群体,有效利用这一群体,将有力地促进环境保护的发展,促进新鲜空气的保护。
本文论述的校园闲置物交易系统网站,主要定位于高校师生。全国各地有大量的高校,以及大量的学生和教师,而且校园市场竞争小,而这有利于此网站的实施和发展。经过校园网站推广,宣传会显得比较容易。比如,在学校论坛发帖,这些都可以很好的满足或激发学生和老师对于新事物的兴趣,可以很快得到积极的回应。再加上卖方和买方双方的达成协议,能够有效降低网购被骗的风险。
如今,对于当前电子商务对经济的促进增长,很多国家奋力向其国民经济各个领域推进电子商务。美国在电子商务上的技术、市场效应和社会法律等方面非常领先,著名的购物网站Amzaon.com、eBay就是象征。电子商务在欧洲虽然起步较晚但在美国却有非常迅猛的发展势头,通过引入《欧盟电子商务动议》的举动开放电信市场,不断促进欧洲电子商务的蓬勃发展。
我国的电子商务起步较晚,但发展速度很快。当电子商务概念进入我国市场后,迅速地被模仿复制。如发展至今的中国二手交易网、中国二手车交易网等。目前,闲置品交易网的分类比例我们基本上可以分为二手房,二手车,二手书,日用品和其他类别包括在二手商品交易网和全国二手商品交易网的本地区域分支。据网上闲置品交易网站提供的闲置品交易服务来看可分为两类:一种是仅仅用来发布闲置物品,多数这些网站是最具地域性的网站,只提供给我们闲置物的信息,但不涉及买家和卖家之间的交易,在这样的网站进行二手交易是相对安全,但二手货毕竟不是新物品所以不能以新物品的形式去贴上价格标签,这就需要买卖双方进行沟通,而且地域性是它最大的缺点。另一种是特殊的闲置物交易网站了,但这种交易系统往往是不完善的,存在着隐患,或许会给买家带来一定的损失。
在对国内外的校园闲置物交易网站进行分析之后,重点对此系统工作流程、系统需求、体系结构、数据库模型进行分析和设计,采用JSP、servlet等技术实现了一个实用的校园闲置物品交易系统。主要研究内容包括:
1.探讨了校园内闲置物品交易网站的基本理论特点,给出了实现校园闲置物品网上交易的目标。
2.讨论校园购物的特点,网上购物过程中的求购信息,对系统结构的关键特征,数据库结构和JSP技术进行了分析,总结了校园网上商品交易网站采用JSP技术实现方法。
3.探讨了校园闲置物品网上交易的建设背景,设计了本次要所完成的平台系统架构,分析了其功能需求、系统结构、数据模型的设计。
4.在校园闲置物品交易网站的需求分析中,设计了校园网上交易模块的主要功能,实现校园网上交易的主要功能。
校园闲置物交易平台面向的对象是广大校园师生,使用此交易平台,用户首先需要注册、登录,之后方能进入首页进行闲置物品交易。本系统所用编程语言为java,使用MySql数据库,经过对市面上各种校园电子商务平台的认识,和结合国外校园闲置物交易的经验,独立开发出了这套全新的校园闲置物品交易平台。
全文共分为六章:
第一章,绪论。先阐述本系统设计的背景及意义,再根据国内外研究现状进行剖析,设计出适合本系统的研究方法。
第二章,相关技术说明。本系统设计和实现主要用到的相关技术的描述
第三章,需求分析与设计。构思出本系统的需求分析,然后以此描述出本系统的功能及其流程图,
第四章,数据库设计。设计出本系统的数据库并建立数据模型。
第五章,系统功能设计与实现。在前两章的基础上开始对本系统进行功能的设计与实现。
第六章,系统测试。在功能都完善好的前提下进行系统测试。
第七章,总结。系统测试完后发现问题进行总结。
第二章 相关技术说明
2.1.1 Servlet的概念
Servlet是一种服务器端的编程语言,是J2EE的核心部分。Servlet是在JSP之前推出的,它在Web服务器端加载并运行的Java应用程序,动态的生成Web页面。
Servlet在提供HTTP服务时,jsp改变了其运行方式。然而根据内部原理,任何一个JSP都会被处理成一个Servlet。HTTP协议处理的过程首先是建立连接,再进行发送请求request,然后提供服务,再进行响应response,最后关闭连接。HTTP协议是Servlet使用最多的协议,但并不是说其他协议servlet就没有用到。
2.1.2 Servlet的生命周期
web容器管理着servlet生命周期的所有方面。它在需要时创建一个servlet类的实例,init()方法初始化,再将请求传递给实例进行service()处理,调用doPost()方法或者doGet()方法,并最终经过destroy()方法销毁实例。在servlet生命周期中,容器在适当时间调用以下的方法:除了doGet()和doPost()方法,还有methodscorresponding再到其他HTTP方法:doOptions(),dotrace(),dodelete(),doPut()和doHead()。通常不经常使用这些方法。而重要的是,要知道容器只创建每个servlet的一个实例,这意味着servlet必须是线程安全的--能够同时处理多个请求。每个线程都通过servlet代码执行单独的线程。如果不丢失细节,如果只在init()和destroy()方法中修改引用对象,并且在请求处理方法中只读取它们,就可以满足实例变量的这个要求。
JSP(Java Server Pages)是由Sun公司倡导、多家公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。
JSP是一种实现普通静态HTML和动态部分混合编码的技术。JSP设计的目的在于简化表示层的表示。JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任何可以方便地分开。
2.2.1 JSP的执行过程
1、当客户第一次请求JSP页面时,JSP引擎会通过预处理把JSP文件中的静态数据(HTML文本)和动态数据(Java脚本)全部转换为Java代码。这个转换工作实际上是非常直观的,对于HTML文本只是简单的用out.println()方法包裹起来,对于Java脚本只是保留或做简单的处理。
2、JSP引擎把生成的.java文件编译成Servlet类文件(.class)。对于Tomcat服务器而言,生成的类文件默认的情况下存放在
3、编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面。
2.2.2 JSP页面的结构
构造一个JSP页面,除了可内嵌规则的HTML代码之外,还有三类主要的JSP元素:脚本元素(Scripting Element),指令(Directive)和动作(Action)。脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;指令用来从整体上控制Servlet的结构;动作用来引入现有的组件来控制Web容器的行为。此外,为了简化脚本元素,JSP定义了一组可以直接使用的隐式对象变量。
2.2.3 JSP与ASP的简单比较
JSP 与 Microsoft 的 ASP 技术非常相似。两者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在 ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 和 JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 和 JSP 都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。
ASP 的编程语言是 VBScript 之类的脚本语言, JSP 使用的是 Java ,这是两者最明显的区别。此外, ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。
2.3.1 CSS3样式介绍
CSS即层叠样式表(Cascading Stylesheet)。 在网页制作时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。 只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式。
CSS3是CSS技术的一个升级版本,是由Adobe、Systems、Apple、Google、HP、IBM、Microsoft、Mozilla、Opera、Sun Microsystems 等许多WEB界的巨头联合组织的一个名为 “CSS Working Group”的组织共同协商策划的。虽然目前很多细节还在讨论之中,但它还是不断地朝前发展着。2010年在HTML5成为IT界人士关注的焦点的同时,它也开始慢慢地普及开来。
2.3.2 CSS3样式新特性
理所当然,大部分的CSS3规范都重复了CSS2.1的内容,但也在它的基础上进行了很多增补和修订。下面列出来的变更并不全面,全部列出也不太现实,因此只罗列了从CSS2.1到CSS3中那些支持度较好、更流行且更实用的变更。
不依赖图片的视觉效果:CSS3包含了大量新特性,可以用来创建一些以前只能通过图片(或脚本)才实现的视觉效果,比如圆角、阴影、半透明背景、渐变以及图片边框等。在这些新特性之中,多数是属于"背景和边框"(Backgrounds and Borders)模块的,其余的则属于"色彩和图像"(Colors and Image Values)模块。
盒容器变形:CSS3中还有一类视觉效果,可以在2D或者3D空间里操作盒容器的位置和形状,比如旋转、缩放或者移动。这些特效称为变形,在"2D变形"(2D Transforms)和"3D变形"(3D Transforms)模块中都有涉及。
独一无二的字体:"字体"(Font)模块引入了@font-face规则,让你能够引入一个存放于服务器的字体文件,并使用该字体来显示页面中的文本,这就突破了以往只能使用用户机器上的字体的限制,也使得页面能呈现出更漂亮的页面。
强大的选择器:CSS3新增了十多个选择器,大部分是伪类和属性选择器。你可用它们选取HTML结构中的特定片段而无需增加特定的ID或类,从而精简代码并使之更加不易出错。这些选择器都描述在"选择器"(Selectors)模块里。
过渡与动画:CSS3的过渡(transition)在其同名的模块里描述。它是一种简单的动画特效,可以平缓地呈现一个元素的样式变化。例如,当用户将鼠标悬停于按钮之上时渐进且平滑地改变其颜色。更复杂的CSS3"动画"(animation)特性也在其同名的模块里有相应描述,它能够实现更复杂的样式变化和元素位移,而不需要用到Flash或JavaScript。
媒体信息查询:"媒体信息查询"(Media Queries)模块介绍了如何根据用户的显示终端或设备特征来提供样式,这些特征包括屏幕的可视区域宽度、分辨率以及可显示的色彩数等。媒体信息查询是一款非常棒的专门针对移动设备来实现优化的工具。
多列布局:CSS3引入了几个新模块来更方便地创建多列布局。"多列布局"(Multi-column Layout)模块描述了如何像报纸布局那样把一个简单的区块拆分成多列,而"弹性盒容器布局"(Flexible Box Layout)模块则能够让区块在水平或垂直方向上保持对齐,相对于浮动布局或绝对定位布局来说它显得更为灵活。此外还有"模板布局"(Template Layout)和"网格定位"(Grid Positioning)的实验性布局模块。
2.3.2. JavaScript脚本
2.4 数据库简介
MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言,它使得存储、更新和存取信息更加容易。MySQL是一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和许多不同的客户程序以及库组成的。
MySQL的主要目标是快速、健壮和易用。最初是因为MySQL的创始人需要这样的一个SQL服务器,它能处理与任何不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL因此就开发出来了。
它提供C,C++,Java(JDBC),Perl,Python,PHP and TCL 的API接口;多平台支持,包括Solaris,SunOS,BSDI,SGI IRIX,AIX,DEC UNIX,Linux,FreeBSD,SCO OpenServer,NetBSD,OpenBSD,HPUX,Win9x and NT;多样的数据类型,包括有/无符号1,2,3,4,8字节integers,FLOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,DATETIME,YEAR,SET,ENUM;非常灵活和安全的权限系统,密码加密;为Windows提供ODBC接口,可通过Access与之相联,另有第三方开发商提供多样的 ODBC驱动程序;在MySQL 3.23中使用新MyISAM最大的表大小可达8百万 TB(2^63个字节);多种语言支持,但不支持中文。
然而,为了实现快速、健壮和易用的目的,MySQL必须牺牲一部分灵活而强大的功能,如子查询、存储过程与触发器、外键、事物处理等。因而,MySQL在某些应用中缺乏灵活性,但这也使它对数据的处理速度较其它数据库服务器至少快2~3倍。
MySQL自身不支持Windows的图形界面,因此,所有的数据库操作及管理功能都只能在MS-DOS方式下完成。首先,必须登陆MySQL服务器,即在提示符/MySQL/BIN>下输入MYSQL –H host –U user –Ppassword,提示符改为mysql>时表示登陆成功。然后,选择所操作的数据库,即mysql> USE databasename。接着就可以用SQL语句进行查询了。如果需要退出数据库服务器,可执行QUIT命令,这样就成功退出服务器了。
当然,由于MySQL的知名度日益增加,许多第三方软件公司推出了MySQL在Windows环境中的具有图形界面的支持软件,如EMS公司的EMS MYSQL MANAGER就提供了Windows形式的MySQL数据库操作功能。
本系统采用单机操作方式,基本配置如下;
处理器:第三代酷睿 [email protected]
硬盘空间:500GB
内存:4GB
开发平台:eclipse
开发语言:JSP、Java
操作系统:Windows7
数据库:MySql使用技术:Java、JSP、SQL、CSS、JDBC、Servlet
需求分析是一个复杂的过程,了解用户的需求,达到用户所需要的软件的功能,估计软件风险和评估项目成本,并最终形成系统的发展计划。在这个设计的路途中,用户确实处于主要的地位,需求分析工程师和项目经理负责对用户的需求进行整理,为后续的软件设计打下坚实的基石。本系统对市场各个层面进行调查,明确校园闲置物交易平台要具备的功能,实现所要实现的模块。
此平台大致围绕两个方面发散细节功能。第一便是用户,然者是管理员。用户所能操作的有用户注册登录、闲置品的浏览收藏、发布闲置品、购物车模块、订单模块、优惠活动、留言板等。管理员可接触的具体功能有登录、修改或添加管理员信息、已收订单管理,已发订单管理、二手交易管理、物品分类管理、留言板管理等。系统结构图如图3-1。
图3-1 系统结构图
1、用户
(1)用户注册:用户要想进本平台采购闲置物品,则需要对个人的一些信息进行填写来注册。包括:用户名、密码、姓名、性别、QQ、电话号码、Email、家庭住址和头像。当用户确定后进行注册成为本系统的会员。
(2)用户登录:当用户点击注册,如果跳至登录页面,则说明之前填写的信息符合要求,接下来用户便可进行登录,用户按照刚填写的信息输入用户名和密码登录本系统,即可体验本系统的其他功能。
(3)闲置品的浏览收藏:用户登录成功后进入本系统的首页,首页下方有最新交易物品,用户可自行浏览挑选,要是对某一闲置品中意,用户可以点击收藏按钮进行收藏。
(4)发布闲置品:用户若有需要出售的闲置物品,可进入“我的二手交易”进行发布,需要输入一系列信息:标题、物品类别、物品说明、联系人、联系电话、联系地址、联系QQ、价格和相关图片。输入后用户点击发布即可,发布后的闲置品可在首页查看。
(5)购物车模块:用户若看上某款闲置品,可以点击“加入购物车”。用户点击首页购物车按钮可进行购物车查看已挑选好的闲置品。若用户觉得没问题可发送订单来进行下单,若不想要某件物品,可对其进行移除,也可清空购物车。
(6)订单模块:用户下单需要填写并确认信息,若订单信息正确,用户进行付款,可选择付款方式,付款完成后即可下单成功。
(7)优惠活动:本站不定时发布优惠活动,用户可点击优惠活动进行查看。
(8)留言板:用户可对本站的商品进行留言。若对本站有何建议也可在此留言,然后管理员会不定时回复。
2、管理员
(1)登录:管理员输入用户名和密码即可登录,关于为何不设注册是为了安全起见,若有想要成为管理员的用户,可联系本站管理员,让其进行添加。当然管理员都需要一定的认证,包括个人的真实信息。成为管理员后身份信息也可进行修改,但是前提修改的信息必须真实合法。
(2)已收、已发订单管理:管理员可查看用户下单后的信息,用户可在我的销售看到。若管理员确认订单信息无误,可进行发货操作,若订单存在问题可进行拒绝。经管理员操作后的订单可在已发订单出看到。
(3)二手交易管理:用户发布的闲置品管理员可在此模块进行管理操作。如果发布的闲置品信息有误,管理员可对其进行修改甚至删除。管理员也可进行闲置品的发布。
(4)物品分类管理:管理员可添加闲置物品的种类来提供用户选择,若某分类长时间无用户将其放于此类,可将其修改或者删除。
(5)留言板管理:用户的留言需要管理员逐一去回复,若有合理的建议可进行采纳,此功能对建设优秀闲置物交易网站有重大作用。若发现有不正当留言,管理员应及时将其删除。
1、用户页面流程图:用户首先访问本平台的地址进入前台页面,前台页面可浏览商品、搜索商品,但是用户若想购买商品必须先注册再登录。若登录成功后,可对商品进行收藏、购买。详见图3-2。
图3-2 用户页面流程图
2、管理员页面流程图:管理员是特殊的用户,登录需要身份认证,若认证成功即可进行管理员操作,如个人信息管理、用户管理、商品管理、订单管理等操作。详见图3-3。
图3-3 管理员页面流程图
3、购物流程图:用户登录后进行浏览物品,挑选物品,也可进行收藏,收藏的物品可在收藏夹看到。用户挑选好商品后添加购物车,决定是否继续购物,若继续则继续浏览,不继续则进行下单,填写个人信息然后选择下单付款方式。详见图3-4。
图3-4 购物流程图
4、下单流程图:用户在购买完物品后进行下单,用户可在我的订单出看到自己所有的订单。用户可进行付款或删除,用户付款后可选择是否继续购物。详见图3-5。
图3-5 下单流程图
1、用户注册E-R图
用户注册实体包含有以下属性:用户名、密码、性别、QQ、电话号码、Email、家庭住址、姓名。
图4-1 用户注册E-R图
2、闲置品信息E-R图
闲置品信息实体包含有以下信息:物品信息、物品类别、物品价格、联系人、联系QQ、联系电话、联系地址。
图4-2 闲置品信息E-R图
3、购物车E-R图
购物车实体包含以下属性:物品名称、物品说明、价格、数量、发布人、物品编号。
图4-3 购物车E-R图
4、订单E-R图
订单实体包含以下属性:订单信息、收货人、电话、地址、付款方式、接收人、状态。
图4-4 订单车E-R图
数据库设计(Database Design)是指在一个给定的应用环境,构造最优的数据库模式,数据库及其应用系统的建立,能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域,数据库系统通常被称为数据库应用系统。
本系统经过严密的设计,设计出了9张表,分别有普通用户信息表、物品分类表、闲置品信息表、购物车信息表、留言板信息表、订单信息表、管理员用户信息表、网站信息表、友情链接表。详见后面表4-1、表4-2、表4-3、表4-4、表4-5、表4-6、表4-7、表4-8、表4-9。
表4-1普通用户信息表
字段名称 |
字段 |
字段类型 |
是否主键 |
用户ID |
id |
Int |
Y |
用户名 |
Uname |
Varchar(64) |
N |
登录密码 |
Touname |
Varchar(64) |
N |
发布物品信息 |
Ddinfo |
Varchar(255) |
N |
发布人 |
Lxr |
Varchar(255) |
N |
发布人电话 |
Lxtel |
Varchar(255) |
N |
发布人QQ |
Lxqq |
Varchar(32) |
N |
发布人地址 |
Addrs |
Varchar(255) |
N |
付款方式 |
Fkfs |
Varchar(255) |
N |
状态 |
Status |
Varchar(32) |
N |
时间 |
Savetime |
Varchar(64) |
N |
表4-2 物品分类表
字段名称 |
字段 |
字段类型 |
是否主键 |
ID |
Id |
Int(11) |
Y |
类型名 |
Typename |
Varchar(64) |
N |
表4-3 闲置品信息表
字段名称 |
字段 |
字段类型 |
是否主键 |
物品ID |
id |
Int(11) |
Y |
标题 |
Title |
Varchar(255) |
N |
物品数明 |
Wpbei |
Varchar(255) |
N |
图片名称 |
Filename |
Varchar(255) |
N |
联系人 |
Lxr |
Varchar(255) |
N |
联系电话 |
Lxtel |
Varchar(255) |
N |
联系地址 |
Lxaddrs |
Varchar(255) |
N |
联系QQ |
Lxqq |
Varchar(255) |
N |
价格 |
Price |
Varchar(32) |
N |
发布人 |
Uname |
Varchar(64) |
N |
发布时间 |
Savetime |
Varchar(64) |
N |
交易类型 |
Infotype |
Varchar(64) |
N |
物品类型 |
Wptype |
Varchar(64) |
N |
表4-4 购物车信息表
字段名称 |
字段 |
字段类型 |
是否主键 |
ID |
id |
Int(11) |
Y |
物品名称 |
Uname |
Varchar(64) |
N |
购买人 |
Touname |
Varchar(64) |
N |
发布人 |
Pname |
Varchar(64) |
N |
价格 |
Price |
Varchar(255) |
N |
图片名称 |
Filename |
Varchar(255) |
N |
状态 |
Status |
Varchar(64) |
N |
购买时间 |
Savetime |
Varchar(64) |
N |
数量 |
Nums |
Varchar(255) |
N |
表4-5 留言板信息表
字段名称 |
字段 |
字段类型 |
是否主键 |
Id |
id |
Int(11) |
Y |
留言者 |
Saver |
Varchar(64) |
N |
留言时间 |
Savetime |
Varchar(64) |
N |
留言内容 |
Content |
Varchar(255) |
N |
回复人 |
Resaver |
Varchar(64) |
N |
回复内容 |
Recontent |
Varchar(255) |
N |
恢复时间 |
Resavetime |
Varchar(64) |
N |
表4-6 订单信息表
字段名称 |
字段 |
字段类型 |
是否主键 |
ID |
id |
Int(11) |
Y |
物品名称 |
Uname |
Varchar(64) |
N |
购买人 |
Touname |
Varchar(64) |
N |
订单信息 |
ddinfo |
Varchar(255) |
N |
联系人 |
Lxr |
Varchar(255) |
N |
联系电话 |
Lxtel |
Varchar(255) |
N |
联系QQ |
Lxqq |
Varchar(32) |
N |
地址 |
Addrs |
Varchar(255) |
N |
付款方式 |
Fkfs |
Varchar(255) |
N |
状态 |
Status |
Varchar(32) |
N |
下单时间 |
Savetime |
Varchar(64) |
N |
表4-7 管理员用户信息表
字段名称 |
字段 |
字段类型 |
是否主键 |
ID |
id |
Int(11) |
Y |
用户名 |
username |
Varchar(64) |
N |
密码 |
Userpass |
Varchar(255) |
N |
真实姓名 |
Truename |
Varchar(128) |
N |
性别 |
Sex |
Varchar(8) |
N |
|
|
Varchar(64) |
N |
电话 |
Phoneno |
Varchar(255) |
N |
邮箱 |
|
Varchar(255) |
N |
地址 |
Dizhi |
Varchar(255) |
N |
用户类型 |
Usertype |
Varchar(32) |
N |
头像图片名称 |
Filename |
Varchar(64) |
N |
注册时间 |
Savetime |
Varchar(64) |
N |
表4-8 网站信息表
字段名称 |
字段 |
字段类型 |
是否主键 |
ID |
id |
Int(11) |
Y |
类型 |
Datatype |
Varchar(64) |
N |
描述 |
Content |
text |
N |
表4-9 友情链接表
字段名称 |
字段 |
字段类型 |
是否主键 |
ID |
id |
Int(11) |
Y |
链接名 |
Liname |
Varchar(128) |
N |
链接url |
Ljurl |
Varchar(255) |
N |
本系统是采用Servlet进行开发的。前台样式偏向于校园官网风格,前台首页放有学校正门的照片,让本校用户有种回家的感觉。
本系统通过配置web.xml配置文件进行应用程序的实现。在web.xml中完成的一个最常见的任务是对servlet或JSP页面给出名称和定制的URL。用servlet元素分配名称,使用servlet-mapping元素将定制的URL与刚分配的名称相关联。
此系统的相关配置如下:
1、filter配置
2、servlet配置
用户可进入本系统首页浏览信息,譬如网站简介、网站公告等。当然还有二手物品信息的浏览,但是如果要进行二手物品的购买,收藏等,需要用户在本系统中进行注册才能进行操作。用户注册成功后跳转登录页面,输入用户名和密码再跳至首页,如果用户觉得注册信息有误,可以进行修改除用户名之外的信息,包括密码、姓名、性别、QQ、电话号码、Email、家庭住址。注册功能用到的方法有checkform():检查用户注册的规范性,具体如下:
function checkform(){
var usernameobj = document.getElementById("username");
if(usernameobj.value==""){
document.getElementById("clabelusername").innerHTML=" 请输入用户名";
return false;
}else{
document.getElementById("clabelusername").innerHTML=" ";
}
var usernameobj = document.getElementById("username");
if(usernameobj.value!=""){
var ajax = new AJAX();
ajax.post("/secondhand/factory/checkno.jsp?table=users&col=username&value="+usernameobj.value+"&checktype=insert&ttime=<%=Info.getDateStr()%>")
var msg = ajax.getValue();
if(msg.indexOf('Y')>-1){
document.getElementById("clabelusername").innerHTML=" 用户名已存在";
return false;
}else{document.getElementById("clabelusername").innerHTML=" ";
}
}
var userpassobj = document.getElementById("userpass");
if(userpassobj.value==""){
document.getElementById("clabeluserpass").innerHTML=" 请输入密码";
return false;
}else{
document.getElementById("clabeluserpass").innerHTML=" ";
}
var qqobj = document.getElementById("qq");
if(qqobj.value!=""){
if(qqobj.value.length>12||isNaN(qqobj.value)){
document.getElementById("clabelqq").innerHTML=" QQ必须为12位以内数字";
页面实现如图5-1:
图5-1 用户注册
用户输入注册成功后的用户名和密码进行登录系统,若输入有误则会提示“用户名或密码错误”。页面实现如图5-2:
图5-2 用户登录验证
当用户名和密码均输入正确时,则进入首页。用户登录功能后台部分代码如下:
if(ac.equals("login"))
{
String pagerandom = request.getParameter("pagerandom")==null?"":request.getParameter("pagerandom");
String random = (String)request.getSession().getAttribute("random");
//if(!pagerandom.equals(random)&&request.getParameter("a")!=null)
//{
// request.setAttribute("random", "");
// go("/admin/login.jsp", request, response);
//}
//else{
String username = request.getParameter("uname");
String password = request.getParameter("upass");
String utype = request.getParameter("utype");
request.getSession().setAttribute("utype", utype);
List<HashMap> list = dao
.select("select * from users where username='"
+ username + "'");
if (list.size() == 1) {
HashMap map = list.get(0);
List<HashMap> ulist = dao
.select("select * from users where username='"
+ username + "' and usertype='管理员' and userpass='" + password
+ "'");
if (ulist.size() == 1&& password.equals(map.get("userpass").toString())) {
request.getSession().setAttribute("admin", map);
gor("/secondhand/admin/main.jsp", request, response);
} else {
request.setAttribute("error", "");
go("/admin/login.jsp", request, response);
}
} else {
request.setAttribute("error", "");
go("/admin/login.jsp", request, response);
}
//}
}
if(ac.equals("mlogin"))
{
String username = request.getParameter("uname");
String password = request.getParameter("upass");
List<HashMap> list = dao
.select("select * from users where username='"
+ username + "'");
if (list.size() == 1) {
HashMap map = list.get(0);
List<HashMap> ulist = dao
.select("select * from users where username='"
+ username + "' and usertype='会员' and userpass='" + password
+ "'");
if (ulist.size() == 1&& password.equals(map.get("userpass").toString())) {
request.getSession().setAttribute("admin", map);
gor("/secondhand/index.jsp", request, response);
页面实现如图5-3:
图5-3 用户登录
用户在挑选完自己想要购买的物品后加入购物车,系统使用session会话机制存储登录的用户,将项目添加到购物车中,这将生成GUID,会话将保存GUID。会话保存时间有限,由于服务器设置不同,如果会话超时,购物车会自动删除商品。因此,当设置会话值时应仔细考虑。系统采用会话机制,主要考虑会话机制的便利性,当用户离开页面时,存储的信息将被自动删除。购物车的一部分不仅实现商品进入购物车,或第一购物车加入收藏夹或清空购物车。相关代码如下:
"30" colspan="2" align="center" style="cursor: hand">发布信息 | |
"159" height="30" align="center">标题 | "353" height="30" align="left">text class='' id='title' name='title' size=35 />'clabeltitle' /> |
"159" height="30" align="center">物品类别 | "353" height="30" align="left"><%=Info.getselect("wptype","wpfl","typename","1=1") %>'clabelwptype' /> |
"159" height="30" align="center">物品说明 | "353" height="30" align="left"> |
"159" height="30" align="center">联系人 | "353" height="30" align="left">text class='' id='lxr' name='lxr' size=35 />'clabellxr' /> |
"159" height="30" align="center">联系电话 | "353" height="30" align="left">text class='' id='lxtel' name='lxtel' size=35 />'clabellxtel' /> |
"159" height="30" align="center">联系地址 | "353" height="30" align="left">text class='' id='lxaddrs' name='lxaddrs' size=35 />'clabellxaddrs' /> |