WEB电子商务网站的设计与实现_第1页
WEB电子商务网站的设计与实现_第2页
WEB电子商务网站的设计与实现_第3页
WEB电子商务网站的设计与实现_第4页
WEB电子商务网站的设计与实现_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WEB电子商务网站的设计与实现摘要随着网络技术的快速发展,Internet的应用随之变得广泛,普遍,许多传统商务行为开始转变为电子商务模式,销售、购物商务网站大量出现。本文对WEB产品展示系统进行了详细的需求分析,理清了该类系统的业务和数据流程以及功能需求,在此基础上设计了系统的数据库和功能模块结构,然后利用基于MVC模式的Struts框架及Java语言实现了该系统,后台数据库是MySql。系统实现了面向客户的产品展示、查询及面向管理者的管理功能,主要包括用户管理、产品类别管理、产品管理和留言版。产品管理功能主要为添加、删除待展示的产品,并将产品以较美观的形式展示给用户,同时列出产品的各种特性及实物照片。来访客户可通过留言板对产品发表评价,网站经营人员或管理员可以通过该留言板统计客户对产品的评价和看法。关键词:电子商务;JSP技术;MYSQL数据库论文类型:设计报告目录TOC\o"2-3"\h\z\t"标题1,1"1绪论 11.1课题来源和意义 11.2相关技术介绍 11.2.1Struts技术 11.2.2MYsql5.0数据库 21.3研究现状 22需求分析 32.1功能分析 32.1.1功能划分 32.1.2功能描述 32.2易用性需求 43概要设计 53.1功能模块设计 53.2数据库设计 63.2.1创建数据库 64详细设计与实现 94.1数据库的连接 94.2用户管理 94.2.1新用户注册 94.2.2用户登录 104.3产品展示 134.4评价或留言 154.5后台管理 164.5.1会员管理 164.5.2产品管理 184.5.3评价或留言管理 194.6系统运行结果 215结论与展望 24参考文献 25致谢 26声明 27-128-1绪论1.1课题来源和意义随着我国信息产业的发展和壮大,Ineternet在国内得到了迅速的普及,不管是文化、政治、经济、新闻、体育、娱乐、商业还是服务行业。尤其是商业,例如义乌小商品市场,创建于1982年,是我国最早创办的专业市场之一;是国际小商品的流通、研发、展示中心,我国最大的小商品出口基地。起初的义乌小商品市场是以经营与家庭和个人日常生活有关的各类小商品为主要交易目标,但是这样的交易方式受到一些因素的限制,以致于不能让义乌小商品轻松地在世界各地流通,然而Internet的出现不仅崛起了义乌小商品市场网站,帮助商人建立有形市场和无形市场相结合的现代化流通网络体系来增加利润和收益,也可以让人们不受时间和空间限制的进行商品交易。商品交易的前提不是要通过商品的展示才可以让顾客知道我们的网站包括了哪些商品,虽然有些交易网站是包含商品展示,但都是简洁的展示一些流行的商品给客户,这样也许无法满足客户的需求,因此开发一个商品展示的网站是必不可少的部分,因为商品展示的网站实现的主要是商品的展示,让人们更多的了解我们网站提供的商品。1.2相关技术介绍JSP技术是当前使用普遍的动态网页设计技术。JSP使用的是java语言,java语言的最大优势就是跨平台性。JSP充分利用了Java技术的优势,具有极强的扩展能力和良好的伸缩性,与开发平台无关,这源于Java的“一次编写,到处运行”的特点,同时也是一项安全的技术。它具有良好的动态页面与静态页面分离的能力,因而正逐渐成为Internet开发的主流技术。JDBC是JSP的数据库连接技术,为其提供了良好的数据库访问能力。JSP技术将处理逻辑封装在JavaBeans或EJB(EnterpriseJavaBeans)组件中,再通过调用JSP将处理的结果显示出来。一方面使得开发组件的开发人员可以专注于组件开发;另一方面使编写JSP的开发人员可以在多处使用组件,而不必关心其实现细节;而且修改组件只须改动组件内部的设计而不必更改JSP代码。这样,大大提高了系统的可重用性,在这个项目中设计的组件在以后的项目中还可以继续使用。1.2.1Struts技术Struts作为ApacheJakarta项目的组成部分,该项目的目标是:为建立javaweb应用程序提供一个开源框架。由于我们开发web应用的复杂度随着系统的复杂度的要求越来越来复杂。特别是在代码重用,代码移植等问题上出现了许多重复开发、维护困难等。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活运用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的流程控制是首先由一个jsp页面提供表单来收集数据,通过将<form>标签的action属性设置为*.do,用来指向某个Action类的实例。然后系统就会自动去查Struts-config.xml配置文件,找到<action-mappings>中的path属性,*.do文件的名字应该和path的属性值有对应的,找到相同的,然后可以通过type属性找到对应的Action类;同样的,可以找到该Action对应的ActionForm类的标识。然后系统又在<form-beans>元素中寻找和刚才ActionForm类的标识匹配的name属性,并获得其type,即获得对应的ActionForm类。在Action类中创建ActionForm类的实例,即可获得jsp页面表单中的参数。然后对获取到的参数进行处理,处理结束后,Action类的实例可以通过return(actionMapping.findForward("标识"))来转向其他jsp页面。可以看出,整个控制过程都围绕着Struts-config.xml配置文件进行的。1.2.2MYsql5.0数据库MySQL是一种开源代码的关系型数据库管理型系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。1.3研究现状目前基于web互联网的商务越来越流行,便捷,效率高,用户体验也越来越好,这些都是由于新技术运用于动态网站的建设,比如ASP.NET、PHP和JSP技术。这些新技术更能保证web互联网电子商务的高效和安全,其中JSP技术具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向Internet的所有特点,这是JSP的天然优势。一次编写,到处运行,这点JAVA比PHP更加出色,除了系统之外,代码不用做任何修改。JSP拥有系统的多平台支持,基本上可以在所有平台上的任意环境中开发,这相比ASP/PHP的局限性是显而易见的。JSP有强大的可伸缩性,从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,JAVA显示了一个巨大的生命力。

2需求分析2.1功能需求2.1.1功能划分本系统共分两个部分,一部分是面向客户的部分,用户可以进行在线留言、产品查询等操作;另外一部分是系统管理部分,这部分的内容包括:产品管理、用户管理和留言管理操作的明细情况等。2.1.2功能描述根据不同用户的不同使用需求与权限,因此不同角色在系统中应具有的功能也有不同。web产品展示系统中一共有具有两个角色,管理员和会员。管理员的权限是可以对产品的管理、会员的管理、评价或留言的管理、密码修改和安全退出。1、产品的管理管理员可以对产品进行添加,随时更新产品的信息到网站中。管理员也可以在后台查看产品的详细信息,能够让管理员了解添加的产品信息是否出错或者过期。如果产品已经过期或者添加的产品信息出错,管理员可以根据该产品的编号来删除该产品的信息。2、会员的管理当会员注册之后就会在后台的会员列表中显示,管理员可以查看会员的信息,如果会员在留言或评价的时候违反一些条款,管理员可以删除该会员的信息。会员的权限是可以注册会员、登陆会员、修改资料、查看自己的评价或留言和在留言区添加评价或留言。注册会员:用户输入自己的会员名、密码、年龄和电话,注册成功之后会跳转到已经登陆页码;会员登陆:用户在登陆界面输入自己已经注册过的会员名和密码,登陆成功之后成为网站的会员,可以进入会员中心修改资料和查看自己对产品的评价或者对网站的留言;评价或留言:当会员对产品有个人的看法或者对网站有建议,可以在在线留言页面添加评价或留言,添加评价或留言时,已经登陆的会员名会在添加留言页码显示,只要输入标题和内容,提交之后就能查看到最新的留言情况。3、评价或留言管理管理员可以查看会员添加的评价或留言,如果发现会员添加的评价或留言有侮辱性的词语,管理员可以删除该评价或留言信息,维护其他会员的利益。4、维护功能防止管理员的密码被盗,管理员可以修改自己的密码,这样就提高了网站的安全性。安全退出就是一种防止密码被盗的手段,利用session的销毁方法让管理员能够安全退出。2.2易用性需求使用JSP技术结合Struts框架,将系统做得简洁,并拥有友好的界面。使普通访问者能浏览产品的分类和详细信息,并且能够登陆后在线留言。而对于管理员来说,能够有一个实用、易用的管理平台,能简捷快速的管理网站。

3概要设计3.1功能模块设计展示系统用户界面首页展示系统用户界面首页产品展示会员中心在线留言热门产品产品类别产品查询详细信息会员注册会员登陆查看留言添加留言图3-1是用户界面的系统功能模块图。在产品展示网站的导航栏中分别有首页、产品展示、会员中心和在线留言这4部分组成。图3-1用户界面的系统功能模块图图3-2是管理员登陆界面的系统功能模块图。当管理员成功登陆之后,管理员的权限有会员管理、产品管理、留言管理、密码修改和安全退出。管理员登陆管理员登陆展示系统管理员登陆界面会员管理产品管理留言管理密码修改安全退出图3-2管理员界面的系统功能模块图前台展示部分的功能模块包括以下几个部分。网站首页:该功能模块主要是介绍一些热门商品,以及向客户推荐新品等。产品展示:该功能模块主要包括产品类别,产品查询,产品的详细信息,在这模块中客户可以通过按照类别进行产品的搜索,并且还可以了解一下产品的详细信息例如,产品的名称,单价,产品的图片等。会员中心:该功能模块是让会员进行注册和登陆,在会员中心中可以修改自己的资料,查看自己的留言。在线留言:在线留言的模块主要面向的是会员,通过注册成为会员后可以进行留言交流。后台管理部分的功能模块包括以下几个部分。会员管理:它主要是对会员的查询、修改、删除等。产品管理:该模块主要包括产品的添加、删除、查询详细信息的操作。管理员可以添加产品时选择相应的产品类别。留言管理:该模块主要是对一些前台会员的留言信息进行管理,可以对留言的查询和删除。功能和会员管理相似。3.2数据库设计3.2.1创建数据库本系统采用Mysql5.0数据库管理系统进行网站数据的存储和管理。安装完MYSQL5.0之后要对数据库进行配置,配置过程中选择utf-8编码。使用utf-8编码的目的是为了在以后的编程中和jsp页面编码一致,防止乱码出现。根据以上各节对系统所做的需求分析和概要设计,规划本系统中使用的数据库分别为产品实体、会员实体、管理员实体和留言实体。图3-3是主要E-R图。管理员管理产品、管理会员,会员对产品进行评价。管理员管理员编号登录名密码产品产品名称产品介绍产品价格产品图片路径产品编号产品类别编号创建时间会员登录名编号密码会员年龄会员电话留言编号留言标题留言内容留言发表时间留言者名字评价管理管理图3-3系统主要E-R图表3-1是管理员信息表。主要存储的是管理员的身份信息,这身份有资格来管理后台。管理员登陆成功之后可进行客户的管理,自身密码的修改、对产品的添加、删除等等管理操作。表3-1管理员信息表admin字段名数据类型是否为空是否主键默认值描述Idint(11)NoYes管理员编号adminnameVarchar(20)YesNULL管理员帐号adminpassVarchar(20)YesNULL管理员密码表3-2是产品信息表。主要存储的是产品的详细信息,管理员可以对这产品信息进行添加、查询和删除功能。添加产品的就会向数据库中添加从form表单中得到的新产品参数,删除产品则会根据产品编号来删除对应的产品信息。表3-2产品信息表goods字段名数据类型是否为空是否主键默认值描述Idint(11)NoYesIDgoodnameVarchar(30)YesNULL产品名字introducemediumtextYesNULL产品介绍creaTimedatetimeYesNULL创建时间priceFloat(255,2)YesNULL产品价格picpathVarchar(50)YesNULL图片名字TypeidInt(11)YesNULL类别编号表3-3是会员信息表。主要存储的是会员的个人资料,登陆网站所需要的会员名和密码。登陆的时候会验证输入的会员名和密码与数据库中的进行匹配,相同的就登陆成功。表3-3会员信息表users字段名数据类型是否为空是否主键默认值描述Idint(11)NoYesIDusernameVarchar(15)YesNULL会员帐号userpassVarchar(15)YesNULL会员密码ageInt(3)YesNULL会员年龄phoneInt(12)YesNULL会员电话表3-4是留言信息表。主要存储的是会员在在线留言区里添加的在线评价或留言,这内容可以是对网站的建议或者是对产品的个人看法,实现了一种互动。表3-4留言信息表message字段名数据类型是否为空是否主键默认值描述Idint(11)NoYesIDusernameVarchar(15)YesNULL留言帐号mtimedatetimeYesNULL发表时间messtextYesNULL留言内容mtitleVarchar(100)YesNULL留言标题

4详细设计与实现4.1数据库的连接本系统通过mysql5.0的数据库,由GetConnection.java来实现数据库的连接。部分代码如下: privatestaticConnectionconn; //拿连接 publicstaticConnectiongetConnection(){ //加载驱动 try{ Class.forName("com.mysql.jdbc.Driver"); //建立连接 conn=(Connection)DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8","root","123"); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace(); } returnconn; }Class.forName()方法后面添加的是mysql数据库的驱动包。加载驱动包之后输入数据库的用户名和密码,那样就能顺利的连接mysql数据库。端口号为3306,“test?useUnicode=true&characterEncoding=utf-8”这个是为了防止出现乱码,所以对编码进行了统一。4.2用户管理用户管理模块主要功能有用户的注册,登陆,查看,修改资料,删除等功能。4.2.1新用户注册当用户点击网站首页的注册时,就会进入注册页面InsertMember.jsp。在这个页面中,要求输入用户名,密码,真实姓名、联系电话等。点击提交之后,首先由“JavaScript”来判断输入的信息是否为空。不为空的时候才进入MemberAction.do?action=1执行action。如果用户名已经存在就会提示出错误,并重新返回到首页,如果成功就会把新加的用户数据添加到数据库并成功返回到首页。注册页面如下图:其插入数据库部分的主要代码如下,publicvoidInsertMember(MemberFormdao){ Connectionconn=GetConnection.getConnection(); PreparedStatementps=null; try{ ps=conn.prepareStatement("insertintousers(username,userpass,age,phone)values(?,?,?,?)"); ps.setString(1,dao.getUsername()); ps.setString(2,dao.getUserpass()); ps.setInt(3,dao.getAge()); ps.setInt(4,dao.getPhone()); ps.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ ps.close(); GetConnection.closeConnection(conn); }catch(SQLExceptione){ e.printStackTrace(); } } }4.2.2用户登陆注册成功后,用户就可以登录到该网站进行一些操作(在线留言等)。用户登陆的jsp页面是Login.jsp,在登陆之前首先会判断用户是否已经登陆过,没有登陆过的用户在首页单击登陆,要求输入用户名和用户密码。执行action查找会员信息表,对照输入的信息和表中的数据与数据库中的信息进行匹配。如果用户不存在或密码出错,则给出提示信息,如果是用户名和密码都正确,则显示成功登陆信息。在Login.jsp页面中判断会员是否已经登陆过,是通过session进行的。主要的步骤是判断能不能读取到session的值,如果能读取到session的值,那就是会员已经登陆过,如果session的值等于null空值,Login.jsp页面就会显示会员的登陆框。登录页面展示如下图:以下是登陆的部分代码,//Action类 privateActionForwardLoginMember(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ Stringusername=request.getParameter("username"); MemberFormmemberForm=dao.check(username); if(memberForm==null||memberForm.equals("")){ request.setAttribute("result","会员名不存在,请重新登录!"); } elseif(!memberForm.getUserpass().equals(request.getParameter("userpass").trim())){ request.setAttribute("result","密码错误,请重新登录!"); } else{ request.setAttribute("memberForm",memberForm); } //如果输入的用户名和密码都正确 returnmapping.findForward("LoginMember"); }//DAO类//根据会员名字查询结果 publicMemberFormcheck(Stringusername){ MemberFormmember=null; Connectionconn=(Connection)GetConnection.getConnection(); PreparedStatementps=null; ResultSetrs=null; try{ ps=conn.prepareStatement("select*fromuserswhereusername=?"); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } try{ ps.setString(1,username); }catch(SQLExceptione1){ e1.printStackTrace(); } try{ rs=ps.executeQuery(); }catch(SQLExceptione){ e.printStackTrace(); } try{ while(rs.next()){ member=newMemberForm(); member.setId(Integer.valueOf(rs.getString("id"))); member.setUsername(rs.getString("username")); member.setUserpass(rs.getString("userpass")); member.setAge(rs.getInt("age")); member.setPhone(rs.getInt("phone")); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } try{ rs.close(); }catch(SQLExceptione){ e.printStackTrace(); } try{ ps.close(); }catch(SQLExceptione){ e.printStackTrace(); } GetConnection.closeConnection(conn); returnmember; }4.3产品展示该模块是向用户呈现不同类别的产品,这样便于客户浏览.它主要实现的功能是查看产品的列表、搜索各类别的产品、显示产品的相关信息。在浏览产品的时候可以选择不同的类别,也可以查看该产品的详细信息。从数据库中查询产品信息的部分代码如下,//Action类//产品展示(前台展示)privateActionForwardGoodShow(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ GoodDAOdao=newGoodDAO(); Listlist=null; list=dao.goodShow(); intpageNumber=list.size();//计算出有多少条记录 intmaxPage=pageNumber;//计算有多少页数 Stringnumber=request.getParameter("i"); if(maxPage%5==0){//取总数据量除以每页数的余数 maxPage=maxPage/5; }else{ maxPage=maxPage/5+1; } if(number==null){ number="0"; } request.setAttribute("number",String.valueOf(number)); request.setAttribute("maxPage",String.valueOf(maxPage)); request.setAttribute("pageNumber",String.valueOf(pageNumber)); request.setAttribute("list",list); returnmapping.findForward("GoodShowSuccess"); }//DAO类 publicList<GoodsForm>goodShow(){ List<GoodsForm>list=newArrayList<GoodsForm>(); GoodsFormgoods=null; Connectionconn=GetConnection.getConnection(); PreparedStatementps=null; ResultSetrs=null; try{ ps=conn.prepareStatement("select*fromgoodsorderbyiddesc"); }catch(SQLExceptione){ e.printStackTrace(); } try{ rs=ps.executeQuery(); }catch(SQLExceptione){ e.printStackTrace(); } try{ while(rs.next()){ goods=newGoodsForm(); goods.setId(rs.getInt("id")); goods.setCreaTime(rs.getString("creaTime")); goods.setPicpath(rs.getString("picpath")); goods.setGoodsname(rs.getString("goodsname")); goods.setTypeid(rs.getInt("typeid")); goods.setIntroduce(rs.getString("introduce"));goods.setPrice(rs.getFloat("price"));list.add(goods); } }catch(SQLExceptione){ e.printStackTrace(); } try{ rs.close(); ps.close(); }catch(SQLExceptione){ e.printStackTrace(); } GetConnection.closeConnection(conn);returnlist;}从数据库中获取到的产品list集合数据是通过action类中的“request.setAttribute("list",list);”来设置list集合数据的,然后由jsp页面的resquest.getAttribute("list")获取到list集合的产品信息,jsp中获取到的list集合数据用for循环将list数据显示出来。4.4评价或留言如果有会员想对我们网站提建议,单击导航栏中的客户留言就可以进入在线留言的页面进行留言。这个模块不仅可以帮助我们知道一些客户对我们商品的评价,也可以提高我们提供更多受客户欢迎的商品及实现客户和网站管理员的交互,这些留言可以让其他的会员和访问网站的所有人看到。并且对留言的查询设置了分页,留言数量多的时候可以分页查看,更加有效率。在添加留言部分,已经登陆的会员只需要输入标题和内容就能实现用户与用户之间的互动。添加在线留言的部分代码如下,//Action类//添加留言 privateActionForwardInsertMessage(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ MessageFormmessageForm=(MessageForm)form; messageForm.setUsername(request.getParameter("username")); messageForm.setMtitle(request.getParameter("mtitle")); messageForm.setMess(request.getParameter("mess")); dao.InsertMessage(messageForm); request.setAttribute("result","添加成功"); returnmapping.findForward("InsertMessageSuccess"); }//DAO类 //添加留言信息 publicvoidInsertMessage(MessageFormdao){ Connectionconn=GetConnection.getConnection(); PreparedStatementps=null; try{ ps=conn.prepareStatement("insertintomessage(username,mtime,mess,mtitle)values(?,now(),?,?)"); ps.setString(1,dao.getUsername()); ps.setString(2,dao.getMess()); ps.setString(3,dao.getMtitle()); ps.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ ps.close(); GetConnection.closeConnection(conn); }catch(SQLExceptione){ e.printStackTrace(); } } }关于评价或留言的发表时间,因为采用的是MYSQL数据库,所以要获取系统的时间就要使用MYSQL数据库专用的获取系统时间的函数now()。在添加产品信息时,获取的创建时间也是这个方法。4.5后台管理4.5.1会员管理主要是查看前台用户列表,对用户进行删除操作。在这个网站中,对于用户的维护非常重要,管理员只有删除用户的权利,无法修改会员的个人信息。只有会员个人可以修改个人资料。利用数据库的删除语句:deletefromuserswhereid=?完成了由会员的id来删除会员信息。删除会员信息的部分代码如下,//Action类 //删除会员 privateActionForwardDeleteMember(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{ if(!dao.deleteMember(Integer.valueOf(request.getParameter("id")))){ returnmapping.findForward("deleteMemberError"); } returnMemberShow(mapping,form,request,response); }//DAO类//删除会员方法(根据会员id删除) publicbooleandeleteMember(Integerid){ Connectionconn=GetConnection.getConnection(); PreparedStatementps=null; try{ ps=conn.prepareStatement("deletefromuserswhereid=?"); ps.setInt(1,Value()); ps.executeUpdate(); ps.close(); returntrue; } catch(SQLExceptionex){ returnfalse; } }Struts-config.xml有关会员管理的配置如下,<!--会员管理--><actionname="MemberForm"path="/MemberAction"scope="request"type="com.xie.actions.MemberAction"validate="true"><forwardname="MemberShowSuccess"path="/bg-MemberShow.jsp"/><forwardname="LoginMember"path="/fg-CheckMemberResult.jsp"/><forwardname="InsertMemberSuccess"path="/MemberResult.jsp"/><forwardname="UpdateMemberSuccess"path="/MemberResult.jsp"/><forwardname="DeleteMemberError"path="/bg-resultMember.jsp"/><forwardname="SelectOneMemberSuccess"path="/MemberShowDetail.jsp"/></action>4.5.2产品管理主要是管理员对产品的查询、添加、删除等操作,涉及到很多的jsp页面,有添加页面bg-goodInsert.jsp,查询和删除的处理页面bg-goodsResult.jsp等。在添加产品的时候要上传产品图片的功能,我使用了struts1的org.apache.struts.upload.FormFile类,这个类能够很方便的上传任何想上传的东西,这个系统要上传的是图片,所以要限定上传文件的后缀名为jpg和jpeg格式。以下是添加产品的部分代码://Action类 //添加产品 publicActionForwardInsertGood(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ UploadFileuploadFile=newUploadFile();//上传图片的类 GoodsFormgoodsForm=(GoodsForm)form; Stringdir=servlet.getServletContext().getRealPath("/pictures"); FormFileformFile=goodsForm.getFormFile(); StringgetType=formFile.getFileName().substring( formFile.getFileName().lastIndexOf(".")+1); Stringresult="添加商品信息失败"; StringimageType[]={"JPG","jpg","jpeg","JPEG"};//限定后缀格式goodsForm.setTypeid(Integer.valueOf(request.getParameter("typeid"))); goodsForm.setGoodsname(request.getParameter("goodsname")); goodsForm.setPrice(Float.valueOf(request.getParameter("pirce"))); goodsForm.setIntroduce(request.getParameter("introduce")); goodsForm.setPicpath(""+uploadFile.upload(dir,formFile)); dao.InsertGood(goodsForm); result="添加商品信息成功"; request.setAttribute("result",result); returnmapping.findForward("GoodInsertSuccess"); }//DAO类//添加产品 publicvoidInsertGood(GoodsFormdao){ Connectionconn=GetConnection.getConnection(); PreparedStatementps=null; try{ ps=conn.prepareStatement("insertintogoods(goodsname,introduce,creaTime,price,picpath,typename)values(?,?,now(),?,?,?)"); ps.setString(1,dao.getGoodsname()); ps.setString(2,dao.getIntroduce()); ps.setFloat(3,dao.getPrice()); ps.setString(4,dao.getPicpath()); ps.setInt(5,dao.getTypeid()); ps.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ ps.close(); }catch(SQLExceptione){ e.printStackTrace(); } } }Struts-config.xml有关产品管理的配置如下:<!--产品管理--><actionname="GoodsForm"path="/GoodAction"scope="request"type="com.xie.actions.GoodAction"validate="true"><forwardname="GoodShowSuccess"path="/GoodShow.jsp"/><forwardname="bgGoodShowSuccess"path="/bg-GoodShow.jsp"/><forwardname="GoodShowDetailSuccess"path="/GoodShowDetail.jsp"/><forwardname="GoodInsertSuccess"path="/bg-goodsResult.jsp"/><forwardname="GoodDeleteSuccess"path="/bg-goodsResult.jsp"/><forwardname="GoodListSuccess"path="/goodslistshow.jsp"/></action>4.5.3评价或留言管理主要是管理员对会员留言的查询和删除操作,在线留言可以是前台用户给后台管理员的建议,也可以是对产品的个人看法,这就实现了一种互动。后台有查询留言页面bg-MessageShow.jsp,删除留言处理页面MessageResult.jsp。删除留言信息的部分代码如下,//Action类://删除留言的操作(后台) publicActionForwardDeleteMessage(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ dao.deleteMessage(Integer.valueOf(request.getParameter("id"))); request.setAttribute("result","删除留言信息成功"); returnmapping.findForward("MessageDeleteSuccess"); }//DAO类 publicvoiddeleteMessage(Integerid){ Connectionconn=GetConnection.getConnection(); PreparedStatementps=null; try{ ps=conn.prepareStatement("deletefrommessagewhereid=?"); ps.setInt(1,Value()); ps.executeUpdate(); ps.close(); } catch(SQLExceptionex){ }Struts-config.xml有关评价或留言管理的配置如下:<!—评价或留言管理--><actionname="MessageForm"path="/MessageAction"scope="request"type="com.xie.actions.MessageAction"validate="true"><forwardname="MessageShowSuccess"path="/MessageShow.jsp"/><forwardname="InsertMessageSuccess"path="/bg-messageResult.jsp"/><forwardname="bg_MessageShowSuccess"path="/bg-MessageShow.jsp"/><forwardname="MessageDeleteSuccess"path="/MessageResult.jsp"/><forwardname="MessageShowByUsernameSuccess"path="/MessageShowByUsername.jsp"/></action>4.6系统运行结果系统完成之后,对各个模块的功能进行了详细的测试,输入数据和预测输出数据相比,发现了一些问题。主要是在查询过程中预计查询结果和实际结果不一致,有时候达不到目的,对数据库的操作表之间的关联考虑得不够周到,因此往往会出现一些小的错误。还有查询条件的前后数据类型不一致也是一个很常见的错误,需要靠一步步的查找解决。各个模块组装完成后,又会出现一些问题,比如分页显示的时候,不能得到正确的分页。数据库和jsp页码之间的编码也有不一致的地方,导致有的jsp页码在显示数据库结果的时候出现乱码,处理乱码的方法是编写个过滤器,实现编码统一。图4-1是后台添加产品信息的功能界面,可以选择产品的类别,输入产品名称,价格上传图以及产品的介绍。点击添加之后,能够顺利将所要添加的产品添加到数据库中去。图4-1后台添加产品信息图4-2是前台添加评价或留言功能界面,会员栏是由系统自动判定是否已经登陆,如果已经登陆过了,就会显示出会员名,会员只要输入标题和内容,点击提交就能对产品发表自己的看法或对网站的建议。图4-2添加评价或留言图4-3是评价或留言查询显示,显示在前台的在线留言里,无论网站的会员还是未登陆的用户,都可以看到这些留言或评价,完全

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论