通用电子商务平台项目_计算机专业毕业论文(编辑修改稿)内容摘要:
(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 标签。通用电子商务平台项目_计算机专业毕业论文(编辑修改稿)
相关推荐
,是一种新型开放的、免编译的应用开发环境, HTML 页面、 Script 语言和动态服务器扩展结合在一起,为企业提供一个服务开发和信息管理的解决方案。 微软公司最初在 IIS 3. 0 版上使用它以取代CGI。 随着 Windows NT 在 WWW 上的使用日益增多, ASP 己成为了开发动态网站、构筑Inter 和 Inter 应用的较佳选择。 ASP 的含义可以 从其字面上三个方面去理解
缺口 ,其上铺横木 ,相隔一定间距 ,留出漏斗口供漏碴用。 在向上扩大开挖时 ,棚架作工作平台用。 图中 2至 5部爆出的石碴全落在棚架上,经漏斗口卸入下面的斗车运出洞外。 这种装碴方式可减轻劳动强度。 下导坑的宽度,一般按双线斗车运输决定。 由于宽度较大,在棚架横梁下可增设中间立柱作临时加固用。 设立棚架区段的 长度,安装碴的各扩大开挖部分的延长加上一定余量来决定。 用漏斗棚架装碴优点显著
继电器是一种基本的电气设备,它用来打开或关闭一定数量互相独立的电 5 路。 这种操作是利用由电压控制的线圈绕组所产生的电磁场来实现的。 当输入量(电、磁、声、光、热)达到一定值时,输出量将发生跳跃式变化的自动控制器件。 目前,继电器主要有以下几种类型:电磁继电器、热继电器、固态继电器、通讯继电器等。 6 第 1 章 继电器工作原理及零部件介绍 继电器的工作原理 电磁继电器是常用的继电器之一
果为: 2AD 按“误码”按钮后修改经 2/3FEC 编码后的二进制序列为: 101011001010101 再“译码”后输出如下结果: 信道传输产生 1 位错码。 可纠错。 该码位于第 9 位,译码结果为: 1010101101 十六进制结果为: 2AD
会福利服务中心 属于新兴事物,它是老年人社会化养老和社会化投资并企业化经营的房地产开发的混合体,有关部门在政策制定和操作方面相对滞后,所以一般开发商在税费减免、金融支持方面得不到相应的优惠,对于具有社会化养老性质的老年社区,开发商需要完全按照市场条件解决项目立项、项目审批、资金筹措等 一系列问题。 由于以上原因,老年社区运营需应遵循市场规律,走“福利性事业、市场化经营”的道路。 投资额大
服务器端脚本环境, ASP 内含于 IIS 以上版本之中,通过 ASP 我们 可以结合 HTML 网页、 ASP指令和 ActiveX 元件建立动态、交互且高效的 Web服务器应用程序。 ASP 文件(即 *.asp 文件)与 HTML 文件类似,但 ASP 文件可以包含脚本命令,脚本命令放在 %和 %之间。 当用户请求一个 *.asp 主页时, WWW 响应 HTTP 请示调用 ASP 引擎