E-Store系统详细说明_第1页
E-Store系统详细说明_第2页
E-Store系统详细说明_第3页
E-Store系统详细说明_第4页
E-Store系统详细说明_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

E-Store详细设计说明书开发时间:2010-6-3结束时间:2010-7-5开发组员:张学武杨欢胡蓉刘冬冬汪利君何珍妮目录1、说明2、引言2.1.编写目的项目背景3、项目概述项目系统设计架构及理念4、项目详细设计说明系统功能说明系统操作流程系统设计数据库设计5、项目代码说明前台代码后台管理6、开发过程出现的问题及解决方法1、说明:该电子书城系统详细说明报告主要包括以下内容:1、引言:系统的相关背景介绍2、项目概述:E-Store系统项目组成员、设计理念及思路、项目进程3、系统详细设计说明,包括:系统功能说明、系统架构设计系统操作流程、ER图、数据库连接4、系统特色技术及代码说明5、项目过程中出现的问题及解决办法2、引言编写目的编写《E-Store系统详细说明报告》是为了得出对电子商城系统准确的描述,陈列出该系统的的多种功能及其使用方法,方便系统管理管理人员及使用者操作。该《说明》的读者是:参与系统开发的管理人员和设计人员。项目背景进入21世纪以来,电子商务伴随着IT的成熟,逐渐发展壮大,成为网络经济的核心。在电子商务的发展过程中,人们逐渐意识到在线购物的无地域界限、安全、方便快捷及其价格优势,在线购物的队伍也随之扩大。不断增长的强大需求正成为电子商务的发展动力,基础环境的成熟与需求欲望的增长将推动电子商务与商务网站的建设不断发展。开发E-Store,能够让消费者很快就可以搜寻到想要的书籍;例如留言板、讨论区、E-MAIL服务,更是为传统书店提供多元化的服务。3、项目概述项目系统设计架构及理念理念:网上书店商务网站构建初始目标主要是面向广大消费者,由于图书消费属于知识型消费类,人们求知欲望没有阶层与年龄差别,因而,书店网站应在具有自己特色的同时应适合不同人士的需要。因此,网上书店网站定位于面向广大消费者,并突出完善售前、售中、售后客户服务与安全保障方面的特色。售前服务提供详细的图书信息、简便快捷的操作过程;售中服务通过采取安全措施为用户提供网上订购服务安全保障与实时支付;售后服务对用户订购的图书提供快速物流配送,并对用户所购图书提供质量保证。架构:前台功能结构前台功能I模块111商品展示■商品查询商品购买■订单管理会员管理■网站新闻展示商品品牌展示■后台功能结构后台管理模块1商品管理订单管理会员管理管理员管理1F1■■I商品列表II商品添加II商品维护4、项目详细设计说明详细功能说明在前台实现主要有:用户注册用户登陆查看全部图书查看图书详细情况购物车功能图书选购查看用户的订单信息显示结账页面和确认页面购买成功页面。后台管理部分主要有:商店图书管理:添加、修改、删除、查看。用户信息管理:查看、修改、删除。订单信息管理:查看订单清单、更新订单付款、删除订单。管理员管理:管理员添加,删除,密码修改,查询。4、2项目整体操作说明(1)顾客在进行第一次购物之前要进行注册。一般要求输入用户名和密码等基本信息。注册完后,系统会显示一个登陆页面;(2)进入网上商店,查看,挑选商品。顾客可以按产品类别检索商品,找出所关心的商品;(3)查看商品细节说明,了解价格、付款方式、购物说明等详细信息;(4)选中商品后,点击“放入购物车”按钮,将商品放入购物车;如需继续购物则点击“继续购物”按钮;(5)选购结束,检查购物车,核实商品和数量是否正确,如有出入,可以重新调整商品和数量,如无误,则点击“结帐”按钮;(6)在结账页面填写自己的相关信息,如姓名,信用账号,电话号码等基本信息,完成结账;在验证页面核对结账信息,如无误点击“确定”完成购物过程,如有误则返回结账页面进行修改。后台管理人员的操作过程:1.管理人员输入用户名,密码进入管理页面。2.管理人员进入管理页面,可进行商店图书查询,添加图书资料订单信息查询,用户信息查询。3.管理人员点击商店图书查询页面。4.管理人员点击添加图书资料页面:输入需添加的图书信息,管理人员点击提交向后台数据库提交信息。提交成功的话,页面显示新图书资料提交成功,否则显示数据库操作失败。5.管理人员点击订单查询页面:页面显示出已接到订单,其中包括图书名称,作者,图书类别,单价,数量,以及总金额,总数量。6.管理人员点击用户信息查询页面:页面显示出用户的基本信息。管理员可以进行用户的删除查找动作。删除成功后,页面显示删除成功。系统操作流程前台流程:

后台流程:4.4.数据库设计书本信息表:titles用来存储书本相关信息书本大类别表:tb_bigType用来保存书本大类别信息书本大类别表:tb_samllType用来保存书本大类别信息

订单信息表:tb_order用来保存前台用户提交的订单信息联系地址真实姓名订单编号付款方式备注信息送货方式-会员名称订单信息表:tb_order用来保存前台用户提交的订单信息联系地址真实姓名订单编号付款方式备注信息送货方式-会员名称联系电话出货标志订单详细订单表:tb_orderDetail用来保存用户提交订单的详细信息友情链接表:tb_link存储商城中超链接的各个网站商城信息表:tb_info用于存储商城公告信息用户信息表:tb_user用于存储商城注册用户信息真实姓名会员编号会员找回密码问题会员名称登录密码年龄c.__问题答案真实姓名会员编号会员找回密码问题会员名称登录密码年龄c.__问题答案职业电子邮件管理员信息表:tb_manager用于存储后台管理员信息5、项目代码说明前台代码A、前台会员管理模块1、会员登录模块流程分析与设计功能实现流程设计功能开始V会员登录信Login.jsp息输入N密码获取页面参数LoginResultjspY会员不存在登录成功保存功能结束查询数据功能开始V会员登录信Login.jsp息输入N密码获取页面参数LoginResultjspY会员不存在登录成功保存功能结束查询数据编程详解:(1)login.jsp页面中提供会员或管理员登录的信息输入,由会员或后台管理员输入登录名和密码,以请求参数的形式提交给LoginResult.jsp处理。(2)LoginResult.jsp页面获取页面请求参数用户名与密码。(3)以会员名(后台管理员)为参数调用UserDao(MemberDao)类的selectUserEntity(selectMemberEntity)方法,查询数据库表。(4)查询结果为空,提示“会员不存在,请重新登录”或“管理员不存在,请重新登录”,否则将方法返回的会员信息表实体对象保存。(5)对实体对象的密码与页面请求参数密码(即会员(管理员)在登录时输入的密码)比较,密码不一致,登录失败,页面提示重新登录,系统页面跳转到

首页。(6)会员密码验证一致,则登录成功,系统显示成功信息,页面跳转至前台商品展示页面,同时将会员信息保存在会话中,以供会员本次在网站访问时使用。同样,后台管理员登陆成功后进入后台页面,也将信息保存在会话中,以供管理员在进行后台管理时使用。2、会员注册模块功能实现流程设计次迎7王册戯对平站台贝检测用户*密码m字符*密码保护问题答案*请输入上边的字符L如:1989-09-07創建您的账号’安全信息设置=(以下信息非常重要,[请慎重填写)*性别:o次迎7王册戯对平站台贝检测用户*密码m字符*密码保护问题答案*请输入上边的字符L如:1989-09-07創建您的账号’安全信息设置=(以下信息非常重要,[请慎重填写)*性别:o男o女~■,魚川|]…欢迎阅读服务衆款协谡,本协谡阐述之祭款和衆件适总于水用户名:★再次输入密码:*密码保护问题:*出生日期注3ft验证’q-12个字符i青选扌華密码提示问题a编程详解:1、在uesrRegister.jsp中提供功能入口链接<ahref="userRegister.jsp">注册</a>2、创建userRegister.jsp,页面设计提交表单3、创建User.jsp,该页面实现实际数据库操作,并不生成返回浏览器的页面,数据库操作结果以JSP隐含对象request的属性将请求转发到doRegister.jsp显示<jsp:forwardpage="doRegistert.jsp"></jsp:forward>3、会员信息修改功能开始frameTop.jsp功能实现流程设计:功能开始frameTop.jsp会员信息修改链接会员注册信息

显示、输入输入信息验证userUpdate.jsp.登录会员注册信息

显示、输入输入信息验证userUpdate.jsp.登录编程详解:1、修改main.jsp2、判断会员是否登录因为在会员登录后会将会员信息以类UserEntity的对象形式在JSP隐含对象session中存放,故可使用判断session对象是否存有会员信息对象来判断是否登录。<%Stringuserlink="userLoginPlease.jsp";//user是会员登录后存放在session对象上的属性名if(session.getAttribute("user")==null){}UserEntityuser=UserEntity)session.getAttribute("user");userlink="userUpdate.jsp?name="+user.getName();%>4、会员找回密码功能实现流程设计:编程详解:在login.jsp中添加找回密码的链接,链接到密码找回功能的起始页面findPass.jsp.jsp创建findPass.jsp,页面风格与主页保持一致,在页面中设计一个提交表单,用于提交找回密码的会员名称,会员输入会员名称后,将作为请求参数以post方法提交到页面findPassl.jsp中,提交之前使用JavaScript函数checkEmpty(form)进行合法性验证在页面中引入数据库会员信息表操作类和实体类,使用操作类的selectUserEntity方法以findPassl.jsp提交的请求参数“会员名称"做参数查询数据库,查询结果存放在页面对象user中。还可以在findPass2.jsp页面中重新设置密码,成功之后跳转到login.jsp页面,重新登录。B、前台商品检索流程分析与设计商品检索功能由两部分页面构成:搜索内容的提交页面和搜索结果显示页面。考虑到搜索功能应是用户常用的功能,而且搜索内容的提交页面元素不需要许多,因而将搜索提交页面设计在通用框架上侧包含的页面index.jsp中,以页面的表单元素searchForm存在,并设计该表单提交的目的地址为执行搜索操作并显示搜索结果的页面kind.jsp。<jsp:includepage="goodsShowSort.jsp"flush="true"></jsp:include></td><tdvalign="middle"><formname="searchForm"method="post"action="goodsShowSearch.jsp"onSubmit="returncheckEmpty(searchForm)"><table>编程详解:1.在GoodsDao类中,添加按商品名称查询方法publicListselectGoodsSearch(Stringsearch),方法参数为String类型的对象,表示商品的名称,方法返回符合查询条件的商品链表2.在页面index.jsp中,添加搜索条件提交表单,表单设计输入文本,负责接受用户需要查询的商品名称,并将此信息以请求参数search提交给页面goodsShowSearch.jsp处理。<tdstyle="top-padding:5px;"width="150"><inputname="search"type="text"size="30"align="left"class="inputStyle"onMouseOver="this.className='inputStyleMove'"onMouseOut="this.className='inputStyle'"></td>3.页面kind.jsp处理用户的商品搜素先从页面请求参数search中获取要查询的商品名称,然后以此作方法参数调用数据库商品信息表操作类BooksDao的selectGoodsSearch()方法//搜索商品BooksDaodao=newBooksDao();Stringsearch二request.getParameter("search");//获取在上页面search中输入的搜索内容ListsearchList=(List)dao.selectGoodsSearch(search);intpageNumber=searchList.size();//计算出有多少条记录intmaxPage=pageNumber;//计算有多少页数4、编写goodsShowSearch.jsp页面C、前台购物车管理1)商品详细信息显示

查看详细信息链接功能开始mam.jspgoodsShowSelectNew.jspgoodsShowSelectFree.jsp>释放资源查看详细信息链接功能开始mam.jspgoodsShowSelectNew.jspgoodsShowSelectFree.jsp>释放资源编程详解:1、创建goodsShowSelectOne.jsp,在页面中引入数据库商品信息表操作类BooksDao和实体类BooksEntity,实现利用BooksDao的selectGoodsOne方法从数据库中检索出会员想购买的商品,检索条件为商品编码,该商品编码通过页面请求参数获得。<%@pageimport="com.mycompany.dao.BooksDao"%><%@pageimport="com.mycompany.entity.BooksEntity"%>2、页面添加生成数据库商品信息表操作类BooksDao的对象,调用selectGoodsOne方法检索商品信息放入BooksEntity对象goods中。publicActionForwardgoodSelect(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){Listlist=null;list=dao.selectGoods();intpageNumber=list.size();//计算出有多少条记录intmaxPage=pageNumber;//计算有多少页数Stringnumber=request.getParameter("i");if(maxPage%6==0){maxPage=maxPage/6;}else{maxPage=maxPage/6+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("goodSelect");}(2)、添加商品到购物车编程详解1、创建cartAdd.jsp,在页面中引入java实用工具类Vector和代表会员所选商品的临时实体类GoodsCart,类Vector是java常用的集合类型,用于生成购物车,购物车里商品GoodsCart的实例对象是Vector类实例中的元素,可以利用Vector类的方法方便的实现对购物车进行维护。<%@pageimport="java.util.*"%><%@pageimport="com.mycompany.cart.CartGoods"%>2、页面添加到购物车的商品信息商品编号和价格是由页面goodsShowOne.jsp以form表单提交的,使用request对象的getParameter方法获取。StringgoodsID=(request.getParameter("goodsId"));floatgoodsPrice=Float.parseFloat(request.getParameter("price"));显示购物车编程详解创建cartShow.jsp,在页面中引入java实用工具类Vector和代表会员所选购商品信息的临时实体类GoodsCart,以及商品信息表操作类BooksDao类,Vector类用于生成对象存放会员的购物车,GoodsCart用于存放遍历购物车中的商品购买信息,BooksDao类用于获取商品的其他信息。<%@pageimport="java.util.*"%><%@pageimport="com.mycompany.cart.CartGoods"%><%@pageimport="com.mycompany.dao.BooksDao"%><%BooksDaodao=newBooksDao();%>(4)修改及清空购物车、编程详解:1、使用session对象的getAttribute方法获取购物车存入Vector类对象cart中,并生成新购物车newcart:Vectorcart=(Vector)session.getAttribute"cart");Vectornewcart=newVector();2、遍历购物车cart内的商品,每件商品的购买数量由页面参数numX获得,将所有购买数量不为0的商品添加到新购物车newcart中:

for(inti=0;i<cart.size();i++){CartGoodscartGoods=(CartGoods)cart.elementAt(i);//取出各件购物车中的商品for(inti=0;i<cart.size();i++){CartGoodscartGoods=(CartGoods)cart.elementAt(i);Stringnum=request.getParameter("num"+i);try{intnewnum=Integer.parseInt(num);cartGoods.number=newnum;if(newnum!=0){newcart.addElement(cartGoods);}3、清空购物车在清空购物车cartClear.jsp页面上,使用session对象的removeAttribute方法,实际上不仅清除购物车中的商品,也删除了购物车,会员如果继续购物,将会重新生成购物车。session.removeAttribute("cart");response.sendRedirect("cartShow.jsp");书籍名称数量价格小计ASF.:amt<155.0055.00删除总计:55.00修改数量后点击确认修改即可<%request.setCharacterEncoding("GBK");Stringisbn[]=request.getParameterValues("ISBN");Stringnum[]=request.getParameterValues("newNum");Mapcart二(Map)session.getAttribute("cart");for(inti=0;i<isbn.length;i++){System.out.println("isbn二"+isbn[i]+"数量二"+num[i]);if(Integer.parseInt(num[i])>=1){CartItemBeancartItem=(CartItemBean)cart.get(isbn[i]);cartItem.setQuantity(Integer.parseInt(num[i]));cart.put(isbn[i],cartitem);}else{out.println("<scriptlanguage='javascript'>alert('请输入有效数!');window.location.href='viewCart.jsp';</script>");return;}}session.setAttribute("cart",cart);response.sendRedirect("viewCart.jsp");%>请确钺您喲繚篥信懑踽1真实姓名:邮寄地址:地区邮编:sthuman417725手机号」15575987&03'信用卡号:请确钺您喲繚篥信懑踽1真实姓名:邮寄地址:地区邮编:sthuman417725手机号」15575987&03'信用卡号:489148674489此次购实商品:mill此次购买总额:165.0元确认提交后将用户的订单信息保存到数据库中前台会员订单查询功能分析:会员在登录进入网上商城后可以查看自己所有的订单(包括已经出货和尚未出货的订单),既可以单独查看自己已经出货的订单,也可以单独查看自己尚未出货的订单;同时还可以对每个订单进行详细信息的查询。用户在前台JSP页面(cartSelect.jsp)可以提交四种请求:1.查看自己的所有订单。2.在自己所有的订单中查看已经出货的订单。在自己所有的订单中查看尚未出货的订单。查看自己某一订单的详细信息。E、Servlet的配置1)Servlet的名称、类和其它选项的配置在web.xml文件中配置Servlet时,首先必须指定Servlet的名称、Servlet类的路径,还有选择性的给Servlet添加描述信息,并且指定在发布时显示的名称和图标。具体如下:<servlet><servlet-name>orderServlet</servlet-name><servlet-class>com.mycompany.servlet.orderServlet</servlet-class></servlet>vservlet-name>和v/servlet-name>元素之间的内容是Servlet的名称vservlet-class>和</servlet-class>兀素之间的内容是Servlet类的路径。2)初始化参数Servlet可以配置一些初始化参数,如下代码:<init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param>代码说明:指定number的参数值是1000。在servlet中可以通过init()方法体中调用getInitParameter()方法进行访问。3)Servlet的映射在web.xml配置文件中可以给一个Servlet做多个映射,因此可以通过不同的方法访问这个Servlet。<servlet-mapping><servlet-name>orderServlet</servlet-name><url-pattern>/orderServlet</url-pattern></servlet-mapping>代码说明:指定名称为OrderServlet的Servlet的映射路径为/OrderServlet。F、创建Servlet过滤器和实现其编程接口1、建立一个实现Filter接口的类publicclassSessionFilterimplementsFilter所有过滤器都必须实现javax.servlet.Filter。这个接口包含三个方法,分别为doFilter、init和destroy。(1)publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,FilterChainchain)throwsIOException,ServletException{//System.out.println("使用以下方法对请求进行编码:encoding="+targetEncoding);HttpServletRequestrequest=(HttpServletRequest)srequest;//设置字符编码格式request.setCharacterEncoding(targetEncoding);//把处理权发送到下一个chain.doFilter(srequest,sresponse);}每当调用一个过滤器(即,每次请求与此过滤器相关的servlet或JSP页面)时,就执行其doFilter方法。正是这个方法包含了大部分过滤逻辑。第一个参数为与传入请求有关的ServletRequest。对于简单的过滤器,大多数过滤逻辑是基于这个对象的。如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此对象构造成HttpServletRequest。doFilter的最后一个参数为FilterChain对象。对此对象调用doFilter以激活与servlet或JSP页面相关的下一个过滤器。如果没有另一个相关的过滤器,则对doFilter的调用激活servlet或JSP本身。(2publicvoidinit(FilterConfigconfig)throwsServletException{this.filterConfig=config;this.targetEncoding=config.getInitParameter("encoding");}Init()方法只在此过滤器第一次初始化时执行,不是每次调用过滤器都执行它。对于简单的过滤器,可提供此方法的一个空体,但有两个原因需要使init()方法。首先,FilterConfig对象提供对servlet环境及web.xml文件中指派的过滤器名的访问。因此,普遍的办法是利用init()方法将FilterConfig对象存放在一个字段中,以便doFilter方法能够访问Servlet环境或过滤器名;其次,FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器初始化参数。(3)publicvoiddestroy()大多数过滤器简单地为此方法提供一个空体,不过,可利用它来完成诸如关闭过滤器使用的文件或数据库连接池等清除任务。2、将过滤行为放入doFilter方法doFilter方法为大多数过滤器的关键部分。每当调用一个过滤器时,都要执行doFilter。对于大多数过滤器来说,doFilter执行的步骤是基于传入的信息的。因此,可能要利用作为doFilter的第一个参数提供的ServletRequest。这个对象常常构造为HttpServletRequest类型,以提供对该类的更特殊方法的访问。3、调用FilterChain对象的doFilter方法Filter接口的doFilter方法以一个FilterChain对象作为它的第三个参数。在调用该对象的doFilter方法时,激活下一个相关的过滤器。这个过程一般持续到链中最后一个过滤器为止。在最后一个过滤器调用其FilterChain对象的doFilter方法时,激活Servlet或JSP页面自身。但是,链中的任意过滤器都可以通过不调用其FilterChain的doFilter方法中断这个过程。在这样的情况下,不再调用JSP页面的Serlvet,并且中断此调用过程的过滤器负责将输出提供给客户端。4、Servlet配置中对于过滤器的配置<filter><filter-name>encoding</filter-name><filter-class>com.mycompany.servlet.EncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>gb2312</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>SessionFilter</filter-name><filter-class>com.mycompany.servlet.SessionFilter</filter-class><init-param><param-name>logonStrings</param-name><param-value>index.jsp;books.jsp;land_back.jsp;landResult.jsp;userLoginResult.jsp;userRegister.jsp;userRegisterResult.jsp;userPasswordFind1.jsp;userPasswordFind2.jsp;userPasswordFind3.jsp;userPasswordFind4.jsp;OnlineCount.java</param-value></init-param>G、Servlet监听器实现第一步:创建监听器类OnlineCount.java,通过NEW命令创建一个Class文件,准备ServletContextListener、HttpsessionListener接口的监听处理器类,生成代码如下:publicclassOnlineCountimplementsServletContextListener,HttpSessionListener{publicvoidcontextInitialized(ServletContextEventsce){//应用程序初始化时启动}publicvoidcontextDestroyed(ServletContextEventsce){//应用程序卸载时启动}publicvoidsessionCreated(HttpSessionEventse){//当有用户访问时启动}publicvoidsessionDestroyed(HttpSessionEventse){//当有用户退出时启动}}第二步:为监听行为添加代码:为用户访问监听行为添加代码:publicvoidsessionCreated(HttpSessionEventse){HttpSessionsession=se.getSession();ServletContextcontext=session.getServletContext();Integercounter=(Integer)context.getAttribute("counter");counter=newInteger(Value()+1);//在线人数增1context.setAttribute("counter",counter);}第二步:为监听行为添加代码:为用户退出监听行为添加代码:publicvoidsessionDestroyed(HttpSessionEventse){HttpSessionsession=se.getSession();ServletContextcontext=session.getServletContext();Integercounter=(Integer)context.getAttribute("counter");counter=newInteger(Value()-1);//在线人数减1context.setAttribute("counter",counter);}第三步:将session监听器配置到web.xml配置文件中:((2)<listener><listener-class>com.mycompany.servlet.OnlineCount</listener-class></listener>•••第四步:显示在线用户的监听结果在需要显示的JSP页面frameTopt.jsp中加入如下代码:<td><fontcolor="orange">  在线人数<%if(application.getAttribute("counter")!=null){%>  <%=application.getAttribute("counter")%><%}else{%>  1<%}%></font></td>后台管理后台管理用了struts技术(1)厂、单击“后台管理员”调用DAO厂、单击“后台管理员”调用DAO查询数据库+进入查询页面r,遍历查询结果集+分贞显示一结果集空?-<2)结束编程详解:在页面index_back・jsp单击超级链接''后台管理员”<ahref=“managerAction.do?action=1”class=“a3”>后台管理员</a>参数action=1调用ManagerAction中的ManagerSelect方法查询所有管理员编程详解:1、单击超级链接“会员管理”<ahref=“memberAction.do?action=2”class=“a3”>2、MemberAction调用MemberDAO的selectMember方法获得所有会员信息3、跳转到页面selectMember・jsp,显示所有会员信息。4、在selectMember・jsp页面单击“详细信息”链接。<ahref=“memberAction・do?action=3&id=<%=form・getId()%>”>详细信息</a>5>MemberAction调用MemberDAO的selectOneMember方法获得当前会员的详细信息。6、调转到selectMember.jsp页面显示当前会员的详细信息。

在页面ind怠gdU即单击超级链接“后台管理员"<atugf=“manag念朋伽止述血二「class=lla3,1>后台管理员v/a二参数action二1调用ManagWGtion中的Rfenag蝕SateQt方法查询所有管理员数据編寻管理员用户名管理鱼姓名按it16managermanager删除15sa删除it+tifJTIt若Mm討斗詰扫弟iT!T4一而卞一市济hn警飄M编程详解:在页面index_back.jsp单击超级链接“后台管理员”<ahref二“managerAction・do?action=l”class二“a3”>后台管理员</a>参数action=1调用ManagerAction中的ManagerSelect方法查询所有管理员从数据库中提取管理员的相关信息,点击添加管理员可以跳转到ManagerInsert・jsp页面,添加管理员,点击删除就可以删除相应的管理员。管理员查询http://localhost8080/E-Store/managerlnsert.jsp(4)密码修改:管理员查询http://localhost8080/E-Store/managerlnsert.jsp点击“修改您的密码”链接就跳转ManagerUpdatePassword.jsp页面5)订单管理:订单的查询编号真实姓名5丕屮住疋白UJJQ订货时间操作1236388710183张三是2009-03-0709:19:00.0详细信息已出删除1236388710184订单的查询编号真实姓名5丕屮住疋白UJJQ订货时间操作1236388710183张三是2009-03-0709:19:00.0详细信息已出删除1236388710184龚云是2009-03-0709:19:00.0详细信息已出删除1236388710185彭志是2009-03-0709:19:00.0详细信息已出删除1249703610687王欢是2009-08-0811:54:00.0详细信息已出删除:tt治1而It右d莖冲寻当箭治埜1而I-一而用户账号zhang用户姓名张三送货电话155T598T603送货地址湖南付款方式邮政忖款运送方式特快专递备注信息hao订货时间2009-03-0709:19:00.0订单?A:"2363«ti7U1183的详細信息商品详细信息商品名称商品数星商品价格null189.匸1元总金额:89.Q从数据库中提取订单的相关信息/点击操作栏/£的详细信息/就可以查询相应订单的详细处理点击删除就可以删除对应的订单口返回已经发货返回编程详解:从数据库中提取订单的相关信息,点击操作栏中的详细信息就可以查询相应订单的详细信息。点击删除就可以删除对应的订单。由OrderServlet处理6)商品查询:编程详解:1•点击index・jsp的査询链接由BigTypeAction处理调用DAO包査询数据库,进入查询页面中,点击“添加大类别”可以进入BigTypelnsert・jsp页面添加大类别。2・创建模型组件BookBean・java为了避免产生路径错误,建议使用配置向导进行struts配置3・创建控制器组件TitleBean・java(Control)GetTitles()方法publicListgetTitles(){ListtitlesList=newArrayList();Stringsql="SELECT*fromtitlesORDERBYgoodsName";//获取书籍列表try{connection=ConnectionManager.getConnction();titlesQuery=connection.prepareStatement(sql);ResultSetresults=titlesQuery.executeQuery();//读取行数据while(results.next()){BookBeanbook=newBookBean();book.setId(results.getString("id"));book.setGoodsName(results.getString("goodsName"));book.setBigId(results.getInt("bigId"));book.setSmallId(results.getInt("smallId"));book.setImageFile(results.getString("imageFile"));book.setOriginalPrice(results.getFloat(book.setOriginalPrice(results.getFloat("originalPrice"));book.setCurrentPrice(results.getFloat("currentPrice"));book.setIntroduce(results.getString("introduce"));book.setCreateTime(results.getString("createTime"));book.setDiscount(results.getInt("discount"));book.setNumber(results.getInt("number"));titlesList.add(book);}}为了实现分页,需要获得记录总数,总页数,当前页数,结果集对象列表等信息。<%TitlesBeantitlesBean=newTitlesBean();//调用访问数据库的方法,返回所有书籍的信息列表Listtitles=titlesBean.getTitles();BookBeancurrentBook;//storetitlesinsessionforfurtheruse//将书籍列表放入会话中,名称为titlessession.setAttribute("titles",titles);intpageNumber=titles.size();//计算出有多少条记录intmaxPage=pageNumber;//计算有多少页数StringstrNumber=request.getParameter("pageNum");intnumber=0;if(maxPage%9==0){//每页显示九个maxPage=maxPage/9;}else{maxPage=maxPage/9+1;}if(strNumber==null){number=0;}else{number=Integer.parseInt(strNumber);}intstart=number*9;//开始条数intover=(number+1)*9;//结束条数intcount=pageNumber-over;//还剩多少条记录if(count<=0){over=pageNumber;}%>点击图片或书名链接:<ahref="displayBook.jsp?id=<%=currentBook.getId()%>">    <%=%></a>%>"><IMG%></a>%>"><IMGsrc="/EStore/images/(7)商品添加功能<%=currentBook.getImageFile()border=0></%>"width=90subStr(currentBook.getGoodsName()+","+currentBook.getOriginalPrice())href="displayBook.jsp?id=<%=currentBook.getId()height=110编程详解:publicActionForwardsaveGoods(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{UploadFileuploadFile=newUploadFile();GoodsFormgoodsForm=(GoodsForm)form;Stringdir=servlet.getServletContext().getRealPath("/images");FormFileformFile=goodsForm.getFormFile();StringgetType=formFile.getFileName().substring(formFile.getFileName().lastIndexOf(".")+1);Stringresult="添加商品信息失败";StringimageType[]={"JPG","jpg","gif","bmp","BMP"};for(intii=0;ii<imageType.length;ii++){if(imageType[ii].equals(getType)){goodsForm.setBigId(Integer.valueOf(request.getParameter("bigId")));goodsForm.setSmallId(Integer.valueOf(request.getParameter("smallId")));goodsForm.setGoodsName(request.getParameter("goodsName"));goodsForm.setOriginalPrice(Float.valueOf(request.getParameter("originalPrice")));goodsForm.setCurrentPrice(Float.valueOf(request.getParameter("currentPrice")));goodsForm.setIntroduce(request.getParameter("introduce"));goodsForm.setImageFile("images/"+uploadFi

温馨提示

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

最新文档

评论

0/150

提交评论