通用电子商务平台项目_计算机专业毕业论文(编辑修改稿)内容摘要:

(20) not null 收货人手机 8) d_item: 订单明细信息表 负责存储了订单包含的哪些商品 ,单价 ,数量等信息 字段名称 类型 约束 描述 id int(12) PK 订单号 orders_id int(10) auto_increment / PK 货物 ID product_id int(10) not null 产品 ID product_name varchar(100) not null 产品名字 dang_price double not null 热销价 product_number int(10) not null 产品数量 amount double not null 产品价格 16 第 5 章 系统的详细设计 实现 数据库与 POJO映射的实现 Hibernate 可以通过一个 XML 的 mapping 文件把一个 POJO( Plain old java object)和数据库中的表对应起来,在这个 XML 文件(一般命名为*.)中,我们可以配置好 Object 和数据库中表的映射关系,然后把这个 mapping 加入到 中,这样 Hibernate 在启动时就可以加载这些 mapping,并可以根据配置文件对对象实现自动的加载,并且可以对这些 Object实习自动的维护。 由于 Spring提供了对 Hibernate的集成,所以我们可以不配置 文件,而通过在 文件中进行相关配置来达到同样的目的。 用户 模块的设计说明 用户模块主要实现了用户注册、登入 /登出、修改信息、查看订单等功能,用户模块结构功能如图 所示。 图 用户 模块 功能结构图 用户注册 模块 系 统采用了 JQuery( )进行表单数据基本验证,注册页面 表单中的数据只要有一项不符合验证规则的数据,则表单提交按钮失效。 为了保证用户注册的邮箱名在数据库中是唯一的,使用了 Ajax 技术向服务器发送异步请求,如果数据库中已经存在,则在页面上提示用户“此邮箱已经被占用”的错误消息,用户注 用户模块 用户注册 用户登录 用户登出 用户信息修改 17 册流程如图 所示。 图 注册流程图 图 邮箱惟一验证效果界面 18 为了防止机器人捣乱胡乱注册,系统注册采用了图片验证码认证。 验证码图片是用 Java awt 包中的 Color、 Graphics、 BufferedImage 等类画出来的。 服务器只要一生成验证码就把它保存在 session 中,用于提交表单时与用户输入的验证码比较,如果不一致,提示用户“验证码出错”,这时用户可以点击后面链接获取新的验证码,重新输入。 点击后面的链接实际上是向服务器的 CheckCodeAction 发送请求,重新生成验证码。 但是为了让浏览器能够每次执行这个请求, 必须让请求地址产生变化,否则浏览器默认是已经请求过的地址,不会重新请求一遍。 方法如下: onclick=(39。 imgVcode39。 ) .src=39。 ../?39。 +(new Date()).getTime()。 图片验证码生成代码如下 (ValiImageAction): public class ValiImageAction extends ActionSupport implements SessionAware { private MapString,Object session。 //验证码 private StringBuffer number。 // 输入流属性 private InputStream input。 // get和 set方法 public InputStream getInput() { return input。 } public void setInput(InputStream input) { = input。 } public String execute() throws Exception { byte[] image = ()。 (valicode,())。 19 = new ByteArrayInputStream(image)。 return SUCCESS。 } private static int WIDTH=100。 //验证码的宽度 private static int HEIGHT=40。 //验证码的高度 private static int NUM=4。 //验证码位数 //验证码字符 private static char[] seq={39。 A39。 ,39。 B39。 ,39。 C39。 ,39。 D39。 ,39。 E39。 ,39。 F39。 ,39。 G39。 ,39。 H39。 ,39。 I39。 ,39。 J39。 ,39。 K39。 ,39。 L39。 ,39。 M39。 ,39。 N39。 ,39。 O39。 ,39。 P39。 ,39。 Q39。 ,39。 R39。 ,39。 S39。 ,39。 T39。 ,39。 U39。 ,39。 V39。 ,39。 W39。 ,39。 X39。 ,39。 Y39。 ,39。 Z39。 ,39。 039。 ,39。 139。 ,39。 239。 , 39。 339。 ,39。 439。 ,39。 539。 ,39。 639。 ,39。 739。 ,39。 839。 ,39。 939。 }。 private byte[] randomImage(){ Random r = new Random()。 //图片的内存映像 BufferedImage image= new BufferedImage(WIDTH,HEIGHT,B)。 //获得画笔对象 Graphics g=()。 (randomColor(r))。 (0,0,WIDTH,HEIGHT)。 (new Color(0,0,0))。 //用 于存储随机生成的验证码 = new StringBuffer()。 //绘制验证码 for(int i=0。 iNUM。 i++){ (randomColor(r))。 int h=(int) ((HEIGHT*60/100)*()+(HEIGHT*30/100))。 20 (new Font(null,|,h))。 String ch=(seq[()])。 (ch)。 (ch, i*WIDTH/NUM*90/100, h)。 } (验证码 :+number)。 //绘制干扰线 for(int i=0。 i=12。 i++){ (randomColor(r))。 ((WIDTH), (HEIGHT), (WIDTH), (HEIGHT))。 } ByteArrayOutputStream os=new ByteArrayOutputStream()。 JPEGImageEncoder encoder=(os)。 //把 BufferedImage对象中的图像信息编码后 //向创建该对象 (encoder)时指定的输出流输出 try{ (image)。 return ()。 }catch(Exception e){ ()。 throw new RuntimeException(e)。 } } 21 private Color randomColor(Random r){ return new Color((255),(255),(255))。 } public void setSession(MapString, Object arg0) { =arg0。 } } 密码采用了加密算法,工具类代码如下: public class EncryptUtil { private static String encrypt(String str,String algorithm) throws Exception { MessageDigest md = (algorithm)。 byte[] bts = (())。 //将 bts转换成字符串 BASE64Encoder encoder = new BASE64Encoder()。 return (bts)。 } public static String encryptMD5(String s){ try { String retVal = encrypt(s,MD5)。 return retVal。 } catch (Exception e) { ()。 return。 } } public static String encryptSHA(String s){ 22 try { String retVal = encrypt(s,SHA)。 return retVal。 } catch (Exception e) { ()。 return。 } } } 如果 ,点击提交按钮将转到注册第二步,也就是邮箱验证页面 ,同时把上一步产生的验证码写入数据库中。 系统没有联网模块,这里只把验证码输出在页面上,方便测试。 邮箱验证码是采用 JDK 中的 UUID 类随机生成的字符串再加上用户的 ID 作为后缀生成。 如果用户输入错误或者不输验证码,则会产生相应的错误提示信息。 图 邮箱验证界面 邮箱验证码输入正确,点击完成按钮,则会跳转到 页面,提示用户注册成 功。 系统的 CheckVerifyCodeAction 会记录下你的登陆时间和登陆 IP,写入数据库的 d_user 表,并把当前这个 user 对象放入 session 中,主要用来判别用户是否登陆,进而给予权限进行相关操作。 这时你可以进行主页访问或者查看你的基本信息。 23 图 注册成功页面 用户登录 系统登录界面 ()需要输入用户名和密码,如果密码或者邮箱不对,则提示用户相关错误信息。 如果用户上次注册的时候没有进行邮箱验证,则会跳转到邮箱验证页面 ()。 只要用户成功登录,则把当前这个用户对象加入到 session 当中,同时记录下当前用户的登陆时间和登陆 IP。 系统制定了一个积分规则,积分对应了 d_user表中的 user_integral字段。 用户积分有三个来源:用户注册送 50 积分,每超过 3 小时登录一次送 2积分,购买商品利用订单总价 /10进行四舍五入为用户积累积分。 图 用户登录界面 24 用户成功登录后,在主页面上则会显示用户的昵称,同时后边只显示登出按钮。 如果用户没有登录,后边则出现登入 /注册按钮,隐藏登出按钮。 这主要是利用了 JSTL 标签。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。