项目03--当当网源码解读

本文分享了阅读当当网源码的心得,涵盖了前端页面结构、js与ajax应用、jsp分包结构、struts2配置及后台框架设计。重点分析了dao层、entity层、interceptor层、util层的功能实现,强调了数据验证、数据库交互和session管理的重要性。
摘要由CSDN通过智能技术生成

最近读了当当网的源码,收获很多,利用这篇博文和大家分享分享心得。

一开始,我将源码导入eclipse的时候,jsp文件大面积出错,原因是jdk版本不匹配,将原项目的jdk删除,重新设置自己eclipse版本的jdk即可。

首先我们来看整个项目的 Project Explorer :

这里写图片描述这里写图片描述

接下来我们先简单的分析一下整个项目:

前端分析:

(1)前端页面采用 js + css + jsp 共同完成,css 主要用于网页中样式的定义,用于美化网页,js 主要是实现简单的表单验证和美化静态页面。前端主要是 结构+样式+行为,而 css 就负责样式, js 负责行为。
(2)前端设计的时候,有 error.jsp,表示一旦出错,交互友好。在jsp页面中用到了struts2的标签库.
(3)jsp文件按照模块分了4个包,cart(购物车)、main()、order(订单)、user(用户)。
①user模块包括用户注册和用户登录,注册分为填写信息,验证邮箱和注册成功。
②order模块包括填写订单、输入地址、生成订单。
③cart模块包括了购物车的所有信息。
④main模块包括了主要的浏览书籍的界面,按照最新排序查询,按照最热排序查询,自动推荐等功能。
(4) js 文件主要用到了 jquery 和 ajax. ajax 实现异步更新页面数据,jquery 是一个轻量级的 js 库,实现更方便的处理 html, 并实现动画效果。
js 文件实现了最简单的表单验证:
① 页面填入的各项信息不能为空
② 各项验证不能全通过则点击按钮无效
③ 信息格式是否正确,是否为空,是否已经存在
验证的方式有很多,最常见的是利用正则表达式进行验证。这些都是直接在前台页面就进行了初步验证,不用和后台和数据库交互。
(5)css文件做的是样式,即字体,布局,颜色,边框等,给每一个页面都要进行样式设计与设置,使页面呈现出来较为酷炫的效果,直接设置就行。
(6)配置文件:
①web.xml中配置了struts2。
②mytag.tld文件是tag标签的配置文件,配置了tag标签后才能在jsp中调用。

后台分析:

(1)配置文件:
struts.xml这个配置文件中配置了一些共用的拦截器,异常处理和 action .
db.properties配置文件中配置了连接数据库的基本参数。
(2)我主要是做后台的,所以现在开始我们来分析最核心的后台框架以及设计思想。

先戳图:

这里写图片描述

整个处理过程如下:
(1)页面发送请求到 struts.xml 配置文件。
(2)配置文件根据action的对应关系去

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.项目介绍 典型电子商务系统(在线购物平台)。模拟了当当系统部分功能。 2.功能需求 1)用户管理模块(3天)user 实现登录、注册功能 2)产品浏览模块(2天)main 实现主界面和类别浏览功能 3)购物车模块(1.5天)cart 实现购买、变更数量、删除等功能 4)生成订单模块(1.5天)order 订单确认、填写送货地址、生成订单功能 3.技术应用 1)技术架构 Struts2,JDBC(连接池),jQuery,Ajax 2)设计思想 MVC和分层设计思想 a.显示层:JSP组件(jQuery,Ajax) b.控制层:Struts2控制器组件、Action组件 c.业务层:Bean组件 d.数据访问层:DAO组件(JDBC) 4.数据库设计 1)数据库导入 create database dangdang; //创建库 use dangdang; //进入dangdang库 set names utf8; //设置连接和发送SQL编码 source 路径/dangdang.sql; //导入sql文件 2)数据表功能 a.d_user(用户信息表) 存储了用户信息,涉及登录和注册功能 b.d_receive_address(收货地址信息表) 存储了收货地址信息,涉及填写送货地址功能 c.d_category(类别信息表) 存储了图书的类别信息,涉及主界面左侧类别菜单功能 d.d_book(图书信息表) 存储了图书的特有信息,涉及产品浏览等功能 e.d_product(产品信息表) 存储了各类型产品的共通信息字段。 f.d_category_product(类别和产品对应关系表) 存储了类别和产品之间包含关系,涉及产品浏览功能 g. d_order(订单信息表) 存储了订单信息,涉及创建订单功能 h. d_item(订单明细表) 存储了订单中所购买的商品信息,涉及创建订单功能。 5. 搭建工程结构 1)引入需要的开发包 struts2开发包 jdbc开发包 dbcp连接池开发包 2)src文件结构 org.tarena.dang.action :控制层 org.tarena.dang.action.user :用户模块的action org.tarena.dang.action.main :产品浏览的action org.tarena.dang.action.order :订单的action org.tarena.dang.action.cart :购物车的action org.tarena.dang.service :业务层 org.tarena.dang.dao :数据访问层 org.tarena.dang.entity :实体类 org.tarena.dang.util :工具类 org.tarena.dang.interceptor :拦截器 3)struts配置文件结构 web.xml(配置Filter控制器) struts.xml (struts主配置文件) struts-user.xml(用户模块配置文件) struts-main.xml(浏览模块配置文件) struts-order.xml(订单模块配置文件) struts-cart.xml(购物车模块配置文件) 4)WebRoot文件结构 /user/* :用户管理的JSP /cart/* :购物车的JSP /order/* :订单的JSP /main/* :产品浏览的JSP /common/* :页眉、页脚等共同JSP /js/* : 放置js脚本文件 /css/* :放置css样式文件 /images/* :放置页面图片文件 /productImages/* :放置产品图片 -----------------连接池的优点----------------- a.可以管理Connection对象,并且将Connection数量控制在一个安全范围内。提高数据库的访问安全性。 b.连接池中的Connection对象与数据库保持连接状态,避免频繁的建立和销毁连接。 ============用户管理模块============== 1.注册需求 1)表单验证(采用js+Ajax) 邮箱:非空、格式、唯一性(ajax) 昵称:非空、格式 密码:非空、格式 确认密码:非空、与密码一致 验证码:非空、正确性(ajax) 2)将表单信息写入数据表d_user 编写实体类、DAO、Action 3)给用户邮箱发送验证码 引入commons-email.jar,email.jar 参考EmailUtil工具类代码 4)进入邮箱验证页面verify_form.jsp 2.邮箱验证 1)表单验证 验证码:非空、正确性(ajax) 正确后跳转到成功提示界面:window.location = "register_ok.jsp"; 2)Action逻辑 a.利用验证码去d_user检查 b.如果正确,将d_user的is_email_verify字段更新成Y;不正确在verify_form.jsp提示“验证失败” c.跳转到register_ok.jsp 3.用户登录 1)表单验证 邮箱:非空、格式 密码:非空 2)Action逻辑 a.检测Email和密码是否正确,失败回到login_form.jsp提示 b.检测is_email_verify邮箱是否通过验证,未通过进入verify_form.jsp c.更新最后一次登录时间last_login_time和IP地址last_login_ip。 d.将用户信息放入session。 e.都正确进入/main/main.jsp 4.main.jsp页面的页眉部分,显示用户是否登录的状态 如果用户已登录,显示"欢迎XXX,【登出】" 如果用户未登录,显示"【登录】【注册】" 数据库 模型 其实项目目 还有不少缺陷 需要完整、大家可以自行修改、里面有一处bug关于购物车的,注入问题、大家自己找找吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值