该表主要字段有订单编码、配送方式、收货人、用户名、手机号码、电话、收货地址、订单状态、结算金额、下单时间。其中订单编码是主键。如表3-5所示。
表3-4 商品信息表
列名 spbh spmc spjg spsl ys cm ks spms rxzt xpzt lxzt ryzt spzt tplj splx 数据类型 Varchar2(50) Varchar2(50) Number(10,2) Integer Varchar2(50) Varchar2(50) Varchar2(50) Varchar2(500) Number Number Number Number Number Varchar2(100) Varchar2(50) 是否为空 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否
是否为主键 √ 描述 商品编号 商品名称 商品价格 商品数量 颜色 尺码 款式 商品描述 热销状态 新品状态 流行状态 日用状态 商品状态 图片路径 商品类型
第 16 页 共 34页
表3-5 订单明细表
列名 ddbm psfs shr yhm sjhm dh shdz ddzt xdsj jsje 数据类型 Varchar2(50) Varchar2(50) Varchar2(50) Varchar2(50) Number Number Varchar2(100) Number Date Number 是否为空 否 否 否 否 否 否 否 否 否 否 是否为主键 √ 描述 订单编码 配送方式 收货人 用户名 手机号码 电话 收货地址 订单状态 结算金额 下单时间
第 17 页 共 34页
第4章 详细设计
将系统分成前台和后台分成两个模块,各模块虽然是独立的,但又统一于同一数据库中,便于管理员管理维护数据库,同时也便于用户的操作。通过数据库连接,对后台数据进项增删改查,并把数据显示到前台页面上[16]。
4.1 创建与数据库的连接
在JSP中可以使用Java的JDBC技术,实现对数据库中表记录的查询、修改和删除等操作。JDBC技术在JSP中占有很重要的位置。JDBC(Java DataBase Connectivity)是Java数据库连接API。JDBC能完成三件事,第一是与一个数据库建立连接,第二是向数据库发送SQL语句,第三是处理数据库返回的结果。要先配置数据库连接的属性配置,配置驱动private String driver=\,配置url路径private String url = \,配置数据库的用户名private String user = \,配置数据库的密码private String password = \,定义配置文件存放路径private File pFile = new File(DataBaseOperate.class.getResource(\replaceAll(\,再定义一个全局连接的变量private Connection con = null和全局通道的变量private Statement state = null,通过Class.forName(driver)加载驱动,通过con = DriverManager.getConnection(url, user, password)建立连接,最后通过state = con.createStatement()创建通道[17]。
4.2 前台功能的设计和实现
前台主要实现了用户注册、用户登录、商品展示、购物车管理、生成订单等功能,采用ajax进行在js中向web服务器请求传递数据并接受数据[18]。
4.2.1 用户管理模块
用户在购买商品前一定要先登录,如果没有注册过则需先注册用户,然后才能浏览、购 买商品。注册时要验证邮箱地址,两次密码是否输入相同,验证码是否正确,还对密码强度进行了判断,手机号码是可选填的,使用了正则表达式[19]来验证邮箱格式和密码强度和手机
第 18 页 共 34页
号码,如果验证码看不清可以点击换一张,就是通过一个click事件,绑定一个事件处理函数,使用attr()方法设置被选元素的属性值。对这一系列的验证增强了系统的安全性,合理性。
用户注册界面如图4-1所示。
图4-1用户注册图
点击注册页面的提交注册按钮之后,会触发一个click事件,通过该按钮的id找到它绑定的函数,点击提交按钮之后要先把所有提示信息清空,然后进行一系列验证,定义了一个falg变量,设为true,如果flag等于true,则使用ajax的post方法请求后台servlet 类if(flag==true){$.post(\,{yxdz: $(\$(\,sjhm: $(\$(\,post向指定的资源提交要处理的数据。该servlet中创建了一个用户的对象RegistUser ru=new RegistUser(), 调用了RegistUser用户类中的ru.saveUserInfo(yxdz, mm,telephone)方法,执行sql语句String sql=\+email+\+password+ \将数据插入到后台数据库表中,定义一个funciton(data){}的函数,如果data等于0表示用户名存在,等于1表示验证码错误,等于2表示验证通过,然后根据if判断,根据id从页面中取得对应元素,将text的文本内容设置到该元素中。
页面中的验证码是定义了一个图形处理类YanZhengMaServlet 来处理的,首先设置http
第 19 页 共 34页
头信息,让页面知道这是一幅图片response.setContentType(\,然后取消图片的缓存response.setHeader(\\,接着再在内存中创建图片的缓冲区BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB ),定义一个画笔Graphics g=image.getGraphics(),最后定义一系列的画边框、背景、随机线、数字的方法,记得的数字放在session中存储以便登陆的时候验证HttpSession session = request.getSession(),session.setAttribute(\,接着调用dispose()方法结束绘画,最后借助于图形输出接口将内存中画的图片通过response中的输出通道向客户端页面输出ServletOutputStream responseOutputStream = response.getOutputStream(), ImageIO.write(image, \。
跳到注册成功之后的页面,点击点此完善超链接到完善信息的(addInformation.jsp)页面,该页面中要对出生日期格式和身份证进行验证,信息完善页面设计如图4-2所示。
图4-2 用户信息完善图
通过EL表达式${yxdz}取得注册的邮箱地址值,将它显示在信息完善页面中,是不可以修改的,然后同样采用上面的请求方式跳转到增加信息的Servlet,先通过request获取参数 值,判断身份证是否有效,定义一个变量flag,flag=0说明身份证号码正确,然后连接数据 库,执行Update更新语句String sql=\+nc+\+xm+\'\+xb+\+csny+\+zjlx+\+zjhm+\jzdz='\+jzdz+\+yhm+\。
信息完善之后就可以登录了,前台登录使用submit这个点击登录按钮触发的事件进行
第 20 页 共 34页