java web 程序---购物车项目内容:
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,【登出】"
如果用户未登录,显示"【登录】【注册】"
数据库 模型
首页展示:
java web 程序---购物车项目内容:的更多相关文章
- java web 程序---购物车选商品,购买,付款
思路:1.有一个单选按钮,让我们选择商品 2.购买的物品及 数量清算 3.付款 我的界面: home.jsp <body> <center> 选择您购买的商品 <br ...
- Java Web程序工作原理
Web开发的最重要的基本功能是HTTP:Java Web开发的最重要的基本功是Servlet Specification.HTTP和Servlet Specitication对于Web Server和 ...
- 在Java Web程序中使用监听器可以通过以下两种方法
之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...
- 在Java Web程序中使用Hibernate
在Java Web程序中使用Hibernate与普通Java程序一样.本文中将使用Servlet和JSP结合Hibernate实现数据库表的增删改查操作. Web程序中,hibernate.cfg.x ...
- java Web程序使用wro4j合并、压缩js、css等静态资源
在Web项目中,js.css合并压缩,不仅有利于减少Http请求数量.减少宽带资源占用,还能有效的管理各种js.css的引入,使整个项目更加有序.而对于访问用户来说,其更大的好处是增加了页面的打开速度 ...
- @Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)
一.前言 类加载器实战系列的第六篇(悄悄跟你说,这篇比较水),前面5篇在这里: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得, ...
- linux tomcat部署含有matlab画图打包的java web程序
首先说下问题:matlab可以把相关算法代码打包成jar文件共java调用,本例使用的jar文件的作用是画图并保存,然后部署在linux的tomcat中进行发布.这里出现了一个问题,具体如下:linu ...
- Spring MVC + Spring + Mybitis开发Java Web程序基础
Spring MVC + Spring + Mybitis是除了SSH外的另外一种常见的web框架组合. Java web开发和普通的Java应用程序开发是不太一样的,下面是一个Java web开发在 ...
- 新浪云部署java web程序 注意事项
在新浪云新手指南里有部署java的示例,但是对一个新手来说难免会有一些地方犯错,折腾了好长时间才把自己的java web部署到了新浪云.这里主要写一些我遇到的问题与第一次使用新浪云的朋友分享一下. 首 ...
随机推荐
- BZOJ 1833 【ZJOI2010】 数字计数
题目链接:数字计数 没啥好说的,裸裸的数位\(dp\). 先枚举当前是算数字\(x\)出现的次数,设\(f_{i,j}\)表示从高位往低位\(dp\),\(dp\)完了前\(i\)位之后\(x\)出现 ...
- RxJava和RxAndroid
现在RxJava和RxAndroid越来越火爆,自己在业余时间也学习了一下,感觉确实很好用,之前 为了完成页面刷新,数据请求,组件信息传递的时候,要使用handler,真的是逻辑思路很强,稍微不注意, ...
- BeginInit与EndInit的实践总结
在项目中,遇到这种情况,总结随便如下: 初始化时:添加操作,BeginInit{flag=true} 警情是一条条加入的,全部都加入后,图表再一次性生成 EndInit{flag=false} ...
- zoj-3329-期望/dp/方程优化
One Person Game Time Limit: 1 Second Memory Limit: 32768 KB Special Judge There is a very ...
- [转载]SQL语句练习
.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 思路: 获取所有有生物课程的人(学号,成绩) - 临时表 获取所有有物理课程的人(学号,成绩) - 临时表 根据[学号]连接两个临时表: 学号 ...
- bzoj2594
题解: lct维护最小生成树 首先,先对于每一条边,生成一个点,这个点连接这一条边的两个端点 点的值为边的权值 其他点的权值都是0 那么每一次查找i-j路径上面最小值,就变成查找树上路径点权最小值 按 ...
- 如何创建管理员权限的CMD命令提示符窗口
最近在使用netstat -anob命令时提示 请求的操作需要提升. 总结了几种创建管理员权限的CMD命令行的方法. 创建临时管理员权限的CMD Win8系统: 按下windows徽标,直接输入cmd ...
- 移动端rem布局雪碧图解决方案 以及分享腾讯团队的在线雪碧图工具
先分享一下地址:http://alloyteam.github.io/gopng/ 使用的方法也很简单,将需要的小图标拖进去,全部拖进去后再调位置(每拖一个进去都会帮你排列好,但是没有间隔,所以全部拖 ...
- 小谈python装饰器及numba的基本使用
1. 预热知识 要理解python中的装饰器,就要明白在python中,函数是一种特殊类型的变量,可以作为参数传递给函数,也可以作为返回值返回.比如下面的代码,就是 str_1 作为参数传递给 str ...
- swift 触摸与手势
class MyView: UIView { var lView:UIView! var time:NSTimer! override init(frame: CGRect) { super.init ...