SSH实战 · 唯唯乐购项目(上)
- 注册
- 前台JS校验
- 使用AJAX完成对用户名(邮箱)的异步校验
- 后台Struts2校验
- 验证码
- 发送激活邮件
- 将用户信息存入到数据库
- 激活
- 点击激活邮件中的链接完成激活
- 根据激活码,查询数据库中是否有该用户;
- 如果有则激活,否则不激活;
- 登录
- 输入用户名、密码、验证码(前台,后台数据校验)
- 用户名、密码都正确同时用户状态必须是激活状态
- 退出
- 销毁session。
- 查询一级分类
- 将一级分类存入session中(每个页面都一样的数据)
- 查询某个一级分类
- 查询所有一级分类,同时查询到该一级分类下的所有二级分类
- 查询该分类下所有的商品,带分页显示
- 查询热门商品
- 查询热门商品:限制查10个
- 查询最新商品
- 查询最新商品:限制查10个
- 查询某个分类商品
- 根据分类的ID进行查询商品
- 查询某个二级分类商品
- 根据二级分类的ID进行查询商品
- 查询某个商品信息
- 根据商品ID进行查询商品
- 添加到购物车
- 将商品添加到购物车
- 从购物车中移除商品
- 将商品从购物车中移除
- 清空购物车
- 将所有的商品信息从购物车中移除
- 生成订单
- 将购物车中的信息存入到数据库(生成订单)
- 清空购物车
- 为订单付款
- 在线支付功能
- 修改订单状态
- 修改订单信息(收货地址,联系方式,收货人等)
- 查询我的订单
- 根据用户ID查询订单
- 查询某个订单详情
- 根据订单ID查询订单
- 添加用户 · 后台只添加管理员用户
- 删除用户
- 查询用户
- 修改用户
- 添加一级分类
- 删除一级分类
- 级联删除一级分类下的所有二级分类
- 修改一级分类
- 级联修改一级分类下的所有二级分类
- 查询一级分类
- 分页查询
- 添加二级分类
- 选择所属的一级分类进行添加
- 删除二级分类
- 删除二级分类下的所有商品
- 修改二级分类
- 查询二级分类
- 分页查询
- 添加商品
- 选择商品所属二级分类进行添加
- 上传商品图片
- 修改商品
- 修改商品二级分类
- 修改商品图片
- 删除商品
- 查询商品
- 商品查询(带分页)
- 查询订单
- 查询所有订单(带分页)
- 异步加载所有订单
- 用户ID
- 用户名
- 密码
- 真实姓名
- 邮箱
- 细致
- 电话
- 用户状态:0--激活;1--未激活
- 激活码
- 一级分类ID
- 一级分类名称
- 二级分类ID
- 二级分类名称
- 一级分类ID(外键指向一级分类主键ID)
- 商品ID
- 商品名称
- 商品商城价格
- 商品描述
- 商品市场价格
- 商品描述
- 商品图片(路径)
- 二级分类ID(外键指向二级分类主键ID )
- 订单ID
- 订单时间
- 订单金额
- 订单状态
- 订单地址
- 订单电话
- 订单收货人
- 用户ID(外键指向用户表的主键ID)
- 主键ID
- 商品ID(指向)
- 订单ID()
- 数量
- 小计
- 用户名
- 密码

- 参考之前得SSH项目实战 · 项目环境搭建——http://www.cnblogs.com/panweiwei/p/6212609.html。
2. 引入前端页面 ---- 页面都放到WebRoot/WEB-INF下。
- 引入静态页面
- 将HTML静态页面都复制到WebRoot/WEB-INF/jsp目录下.
- 将JS、CSS文件分别复制到WebRoot/js、WebRoot/css目录下.
3. 访问首页
- 创建包的格式:
- 编写Action
- IndexAction
- 改造jsp和文件路径
- 将html静态页面改为jsp页面文件
- 将jsp中的css、js、图片路径改为绝对路径(${pageContext.request.contextPath} )
- 配置Action
- 配置applicationContext.xml
- 配置struts.xml
- 将页面中能共用的菜单、头部区域提出来(新建一个head.jsp)
- 在原来网页的头部处将head.jsp包入就好:
- 点击注册链接进行跳转(添加到一个Action中,从Action中完成页面转向)
- 修改注册的访问路径
- 编写Action
- 配置applicationContext.xml
- 配置struts.xml
- 修改register.jsp页面:
- 替换css、图片的路径
- 包含head.jsp。当然了,原页面中相应的内容删掉
- 用户注册校验
- 统一字段名的name、id(与数据库表中字段、实体类中的字段对应);
- 加 JS。
- AJAX异步校验:验证数据库中是否已存在输入的用户名
- 事件触发:onblur
- 编写AJAX代码:向action中提交:传递username参数
- 编写antion:
* 接收username:模型驱动接收
* 编写实体类:User;
* 映射文件:User.hbm.xml;
* 将实体类与映射文件配置到spring中。
- 编写DAO
* 继承HibernateDaoSupport;
- 在配置中注入sessionFactory
- 编写Service
* 注入UserDao;
* 配置事务管理;
- 在Action所在包下创建一个校验的xml
- 创建一个与Action类名-validation.xml(只针对register方法进行校验)
- UserAction-user_regist-validation.xml
- 在struts.xml中配置INPUT逻辑视图
- 在register.jsp页面先引入struts标签
- 在相应的位置回显错误提示信息。如密码验证提示如下:
- 用户注册
- 将数据保存到数据库
- 完善user对象
- 发送激活邮件
- 电子邮箱:邮件服务器上的一块空间;
邮件服务器:类比于web服务器(tomcat),有相应的服务器软件;
- 邮件协议:大公司发送和接收服务器分开,也可以都用一个服务器。
- 邮件发送的全过程:理论上需要联网,但是通过搭建在本地的服务器,可以在本地进行邮件的发送。
- 搭建邮箱服务器:
- 安装邮箱服务器(易邮邮箱服务器,就按默认的安装在C盘)
- 修改域名:工具-->服务器设置-->单域名改为:shop.com
- 注册几个内部账号:账号-->新建账号。密码设为55555
- 注册一个商城官方账号:service 密码:55555
- 安装邮件客户端软件(可以接发邮件):避免了网页版session的过期离线问题。
- 流行的有软件有:outlook(微软收费)、foxmail(免费,选用foxmail)
- 配置
- 编码实现邮件发送
- 用户激活
- 在邮箱客户端中点击激活链接:
- 根据链接中传递的激活码进行查询
- 用户登录
- 登录页面跳转链接
- 将html编写为login.jsp,并更换引用路径以及菜单头文件
- 修改页面上的登录链接为${pageContext.request.contextPath}/user_loginPage.action
- 编写Action中的方法
- struts.xml中配置页面转向
- 登录功能实现
- 添加login.jsp中的表单action
- 接收用户输入的用户名、密码——模型驱动会自动接收;
- 调用userService,进行查询——参数:用户名、密码、用户状态。
- 登录成功:跳转到首页,并将用户信息显示在首页。
- 登录失败:跳转回登录页面,并将错误信息显示在登录页面。
- 用户退出
- 给链接加action的路径,点击退出链接
- 销毁session
- 页面跳转
- 验证码
- 在com.weiwei.shopping.user下编写单独的验证码Action类;
- 在spring、struts配置文件中完成配置;
- 页面中需要的位置显示验证码
- 编写JS,点击刷新验证码
- 提交到action,在action中进行比较,表单输入的与session中的验证码不相等则相应请求不提交。
SSH实战 · 唯唯乐购项目(上)的更多相关文章
- SSH实战 · 唯唯乐购项目(中)
用户模块 三:一级分类的查询 创建一级分类表并导入基本数据 CREATE TABLE `category` ( `cid` int(11) NOT NULL AUTO_INCREMENT, ` ...
- SSH实战 · 唯唯乐购项目(下)
后台模块 一:后台用户模块 引入后台管理页面 创建adminuser表: CREATE TABLE `adminuser` ( `uid` int(11) NOT NULL AUTO_INCREM ...
- 配置github的SSH key及GitHub项目上传方式一——使用终端命令行
GitHub是一个开源的大仓库,我们经常从github上下载项目进行学习和研究,下面是一个完整的步骤——往GitHub上传一个新项目. 一.注册GitHub账号 1.注册GitHub账号,地址:htt ...
- Spark入门实战系列--6.SparkSQL(上)--SparkSQL简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身是 ...
- 应用程序框架实战三十八:项目示例VS解决方案的创建(一)
进行项目开发的第一步,是创建出适合自己团队习惯的VS解决方案,虽然我已经提供了项目示例,但毕竟是我创建的,你直接使用可能并不合适,另外你如果尝试模仿重新创建该示例,中间可能碰到各种障碍,特别是项目间的 ...
- 将本地项目上传到Github
将本地项目上传到Github 转载请注明出自天外归云的博客. 前提 已经下载了Git到本地. 创建Repository 首先登陆我的Github页面,在Repositories中New一个并起Repo ...
- iTunes Store:隐藏和取消隐藏已购项目
使用 Mac 或 PC 上的 iTunes 来隐藏或取消隐藏已购项目. 如何隐藏已购项目 在 Mac 或 PC 上打开 iTunes. 从 Store 菜单中,选取商店 > 登录,然后输入您的 ...
- 【转】【Egit】如何将eclipse中的项目上传至Git
1.下载egit插件 打开Eclipse,git需要eclipse授权,通过网页是无法下载egit的安装包的.在菜单栏依次打开eclipse→help→install new software→add ...
- Git本地项目上传 & SourceTree & GitHub 简单使用
Git(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理 ...
随机推荐
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- 虾扯蛋:Android View动画 Animation不完全解析
本文结合一些周知的概念和源码片段,对View动画的工作原理进行挖掘和分析.以下不是对源码一丝不苟的分析过程,只是以搞清楚Animation的执行过程.如何被周期性调用为目标粗略分析下相关方法的执行细节 ...
- Zabbix基本配置及监控主机
监控主机一版需要在被监控的主机上安装Zabbix Agent 监控主机 安装zabbix-agent 首先需要在被监控的主机上安装agent,可以下载预编译好的RPM进行安装,下载地址:http:// ...
- nodejs模块发布及命令行程序开发
前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...
- HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置
在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...
- ASP.NET中画图形验证码
context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天 ...
- 面向对象相关知识点xmind
- PHP设计模式(三)抽象工厂模式(Abstract Factory For PHP)
一.什么是抽象工厂模式 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象 ,而且使用抽象工厂模式还要满足以下条件: 系统中有多个产品族,而系统一次只可能消费其中一族产品. 同 ...
- 品牌营销:不要Beat,要逼格!
品牌营销:不要Beat,要逼格! 奥美的创始人大卫·奥格威说,广告营销应当是"具有风度的推销产品".而当下的营销手段,"风度"早已被抛之脑后, ...
- Bluemix中国版体验(二)
从上一篇到现在大概有一个多月了.时隔一个月再登录中国版Bluemix,发现界面竟然更新了,现在的风格和国际版已经基本保持一致!这次我们来体验一下Mobile Service.不过mobile serv ...