实训项目
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dataSource.getConnection();
第一次集中编码:D任务
任务说明
完成商品展示
第一次集中编码:E任务
任务说明
完成首页中商品分类
第一次集中编码:F任务
任务说明
查看新闻显示
第一次集中编码
关键代码与提示
完成首页中商品分类
• 编写用于处理分类的CategoryServlet • 编写业务逻辑层CategoryBiz接口及其实现类 • 编写数据访问层CategoryDao接口及其实现类 public List<ProductCategory> getProductCategories(Long parentId) • 编写查询商品分类的方法, 注意分类商品是否包含子分 throws SQLException { 类 List<ProductCategory> rtn = new ArrayList<ProductCategory>();
针对留言的回复
发表的留言内容 创建时间 回复时间 留言用户昵称
varchar(200)
varchar(200) datetime datetime varchar(10)
问题分析1:数据库设计7-4
商品表(easybuy_product):存放商品基本信息
字段名称
ep_id ep_name ep_description ep_price ep_stock
任务描述
前台功能
首页页面 用户注册 用户登录 新闻动态 分类商品信息展示 商品详情页面 购物车 留言簿
演示各项功能效果
任务描述
后台功能
用户信息管理 商品信息管理
• 商品的管理 • 商品分类的管理
订单管理 留言簿管理 新闻管理
演示各项功能效果
}
第三次集中编码:D任务
任务说明
实现购物车功能
第三次集中编码:E任务
任务说明
按照分类显示商品信息
第三次集中编码:F任务
任务说明
• 后台新闻管理中的新增新闻功能
第三次集中编码
class CartServlet extends HttpServlet { public 关键代码与提示 protected void doPost() { … 购物车功能
int(10)
int(10) varchar(200)
非空
非空
问题分析1:数据库设计7-5
商品分类表(easybuy_product_category):存 放商品的分类基本信息
字段名称
epc_id epc_name epc_parent_id
说
编号 名字
明
类
int(10)
型
非空 非空
备
注
主键,自动编号
问题分析1:数据库设计7-1
用户表(easybuy_user):存放用户基本信息
字段名称
eu_user_id
eu_user_name eu_password eu_sex eu_birthday eu_identity_code eu_email eu_mobile eu_address eu_status
String sql = "select * from easybuy_product_category "; if (parentId != null) sql = sql + " where epc_parent_id = " + parentId; sql = sql + " order by epc_parent_id,epc_id"; //获取数据库连接 //设置SQL语句参数 //执行数据库查询操作 //释放资源 return rtn; }
主键,自动编号
问题分析2:界面交互设计
确认每个用例的页面列表及页面元素
参考演示案例页面 在演示案例界面基础上进行优化
设计原则
操作方便 开发简单 易于维护
问题分析3:技术框架设计
三层结构技术
表示层
• • • • 使用JSP实现页面显示 使用Servlet进行流程控制 使用JavaScript进行页面交互 使用Ajax增强用户体验
业务逻辑层
• 使用JavaBean实现业务封装
数据访问层
• 使用数据源+JDBC访问数据库 • 使用DAO模式
使用实体类在各层传递数据
使用MySQL存储数据
难点分析1:理解业务
如何实现购物车? 如何实现页面整合? 如何进行权限控制? 如何实现分页显示?
难点分析2:使用三层结构开发
varchar(20) int(10)
父分类
问题分析1:数据库设计7-6
订单表(easybuy_order):存放订单相关信息
字段名称
eo_id
eo_user_id eo_user_name
说
编号
明
类
int(10)
型
非空 非空
备
注
主键,自动编号
用户ID 用户名
int(10,0) varchar(20)
非空,不能重复
非空 非空,系统时间
问题分析1:数据库设计7-3
留言表(easybuy_comment):存放用户留言
字段名称
ec_id 编号
说
明
类
int(10)
型
备
注
主键,自动编号 非空 非空 非空
ec_reply
ec_content ec_create_time ec_reply_time ec_nick_name
实现前台首页商品展示功能 实现商品详情展示功能 实现近期商品浏览
第三次集中编码:C任务
任务说明
实现留言的发布功能
第三次集中编码
关键代码与提示
用户注册和登录功能
• 编写用于处理用户的Servlet • 编写业务逻辑层UserBiz接口及其实现类 • 编写数据访问层UserDao接口及其实现类 • 编写保存用户信息的方法 • 用户注册页面中,用户名、真实姓名、密码、性别为必 //编写保存用户信息的 DAO方法 填项,使用 对用户名进行验证 public void save(UserAjax user) throws SQLException { String sql = " insert into easybuy_user(eu_user_id, eu_user_name, " • 编写查询方法,根据用户名和密码实现登录用户查询
非空,0为女,1为男
非空
非空 1普通用户 2管理员
问题分析1:数据库设计7-2
新闻表(easybuy_news):存放新闻信息
字段名称
en_id
说
编号
明
类
int(10)
型
备
主键,自动编号
注
en_title
en_content en_create_time
标题
内容 录入日期
varchar(40)
varchar(1000) datetime
参考代码或结果演示
使用数据源访问数据库
• • • • 在Tomcat中配置context.xml文件 配置web.xml文件 使用JNDI查找数据源 <Resource auth="Container" 从数据源中获取连接
driverClassName="oracle.jdbc.driver.OracleDriver" maxActive="50" maxIdle="10" maxWait="10000" <resource-ref> try { name="jdbc/easybuy" <description>news DataSource</description > ctx = new InitialContext(); password="sys" <res-ref-name>jdbc/easybuy</res-ref-name> dataSource = type="javax.sql.DataSource" <res-type>javax.sql.DataSource</res-type> (DataSource) ctx.lookup("java:comp/env/jdbc/easybuy"); url="jdbc:oracle:thin:@10.0.0.75:1521:ORCL" <res-auth>Container</res-auth> } catch (NamingException e) { username="system" </resource-ref> e.printStackTrace(); /> }
牢记步骤口诀
搭建项目框架 基于分层开发
熟能生巧 善于总结并分享常见错误
要求在项目开发过程中记录遇到的问题并分享
阶段划分
第一次:
阶段项目指导-软件文档 需求讲解、需求分析
第二次:集中编码 第三次:集中编码 第四次:集中编码 第五次:集中编码 第六次:软件生命周期-测试 第七次:集中编码 第八次:作业提交
+ "eu_password,eu_sex, eu_birthday,eu_identity_code,eu_email, + " eu_mobile," eu_address,eu_status) values(?,?,?,?,?,?,?,?,?,?)"; //获取数据库连接 //设置SQL语句参数 //执行数据库查询操作 //释放资源
说 明
商品编号 商品名字 商品描述 商品价格 商品库存
类
int(10)
型
非空 非空 非空
备
注
主键,自动编号
varchar(20) varchar(100) decimal(10,2) int(10)
epc_id
epc_child_id ep_file_name
所属分类ID
所属二级分类ID 上传的文件名
第二次集中编码:A任务
任务说明(使用Jquery实现)
“我的易买”下拉菜单的自动显示与隐藏(登录后不 再显示登录、注册,而是显示“我的易买”菜单) 打开首页时弹出固定大小的广告页面窗口 随滚动条上下移动的广告图片
第二次集中编码:B任务
任务说明(使用Jquery实现)
对选购的商品实现删除和修改数量 自动计算金额
eo_user_address
eo_create_time eo_cost
用户地址
创建时间 金额
varchar(200)
datetime decimal(10,2)
非空
非空 非空
非空 1下单 2审核通过 3 配货 4送货中 5收货并确认
eo_status
eo_type
状态
付款方式
int(2)
int(2)
说
用户名
明
类
型
非空 非空
备
非空,主键
注
varchar(10)
varchar(20) varchar(20) bit date varchar(60) varchar(80) varchar(11) varchar(200) int(2)
真实姓名 密码 性别 出生日期 身份证号 email 手机 地址 类型
实训项目
夏汛 pluto_xun@qq.com
训练的技能点
数据库设计 面向对象程序设计 分层开发技术 使用JSP实现页面显示 使用Servlet进行流程控制 使用JavaBean实现业务封装 使用数据源+JDBC访问数据库 使用Oracle存储数据 使用JavaScript进行页面交互 使用Ajax增强用户体验
非空 1 货到付款 2 网 上支付
问题分析1:数据库设计7-7
订单详情表(easybuy_order_detail):存放订单 详细信息
字段名称
eod_id eo_id ep_id eod_quantity eod_cost
说 明
编号 订单ID 商品ID 数量 金额
Leabharlann Baidu
类
型
非空 非空 非空 非空
备
注
int(10,0) int(10,0) int(10,0) int(10,0) decimal(10,2)
第二次集中编码:C任务
任务说明
对用户的输入进行验证并提示(前端JQuery验证,登 录和注册页)
第二次集中编码:D任务
任务说明
实现登录界面和注册界面的注册码(使用kaptcha组件 )
第三次集中编码:A任务
任务说明
实现用户登录,注册功能
第三次集中编码:B任务
任务说明
第一次集中编码:A任务
任务说明
搭建项目框架 向教师提交本组各组员的分工、项目进度计划
第一次集中编码:B任务
任务说明
编写数据表,每个表至少添加三条记录 创建对数据表对应的实体类 为top.jsp添加连接
第一次集中编码:C任务
任务说明
新闻动态列表显示
第一次集中编码
第一次集中编码:D任务
任务说明
完成商品展示
第一次集中编码:E任务
任务说明
完成首页中商品分类
第一次集中编码:F任务
任务说明
查看新闻显示
第一次集中编码
关键代码与提示
完成首页中商品分类
• 编写用于处理分类的CategoryServlet • 编写业务逻辑层CategoryBiz接口及其实现类 • 编写数据访问层CategoryDao接口及其实现类 public List<ProductCategory> getProductCategories(Long parentId) • 编写查询商品分类的方法, 注意分类商品是否包含子分 throws SQLException { 类 List<ProductCategory> rtn = new ArrayList<ProductCategory>();
针对留言的回复
发表的留言内容 创建时间 回复时间 留言用户昵称
varchar(200)
varchar(200) datetime datetime varchar(10)
问题分析1:数据库设计7-4
商品表(easybuy_product):存放商品基本信息
字段名称
ep_id ep_name ep_description ep_price ep_stock
任务描述
前台功能
首页页面 用户注册 用户登录 新闻动态 分类商品信息展示 商品详情页面 购物车 留言簿
演示各项功能效果
任务描述
后台功能
用户信息管理 商品信息管理
• 商品的管理 • 商品分类的管理
订单管理 留言簿管理 新闻管理
演示各项功能效果
}
第三次集中编码:D任务
任务说明
实现购物车功能
第三次集中编码:E任务
任务说明
按照分类显示商品信息
第三次集中编码:F任务
任务说明
• 后台新闻管理中的新增新闻功能
第三次集中编码
class CartServlet extends HttpServlet { public 关键代码与提示 protected void doPost() { … 购物车功能
int(10)
int(10) varchar(200)
非空
非空
问题分析1:数据库设计7-5
商品分类表(easybuy_product_category):存 放商品的分类基本信息
字段名称
epc_id epc_name epc_parent_id
说
编号 名字
明
类
int(10)
型
非空 非空
备
注
主键,自动编号
问题分析1:数据库设计7-1
用户表(easybuy_user):存放用户基本信息
字段名称
eu_user_id
eu_user_name eu_password eu_sex eu_birthday eu_identity_code eu_email eu_mobile eu_address eu_status
String sql = "select * from easybuy_product_category "; if (parentId != null) sql = sql + " where epc_parent_id = " + parentId; sql = sql + " order by epc_parent_id,epc_id"; //获取数据库连接 //设置SQL语句参数 //执行数据库查询操作 //释放资源 return rtn; }
主键,自动编号
问题分析2:界面交互设计
确认每个用例的页面列表及页面元素
参考演示案例页面 在演示案例界面基础上进行优化
设计原则
操作方便 开发简单 易于维护
问题分析3:技术框架设计
三层结构技术
表示层
• • • • 使用JSP实现页面显示 使用Servlet进行流程控制 使用JavaScript进行页面交互 使用Ajax增强用户体验
业务逻辑层
• 使用JavaBean实现业务封装
数据访问层
• 使用数据源+JDBC访问数据库 • 使用DAO模式
使用实体类在各层传递数据
使用MySQL存储数据
难点分析1:理解业务
如何实现购物车? 如何实现页面整合? 如何进行权限控制? 如何实现分页显示?
难点分析2:使用三层结构开发
varchar(20) int(10)
父分类
问题分析1:数据库设计7-6
订单表(easybuy_order):存放订单相关信息
字段名称
eo_id
eo_user_id eo_user_name
说
编号
明
类
int(10)
型
非空 非空
备
注
主键,自动编号
用户ID 用户名
int(10,0) varchar(20)
非空,不能重复
非空 非空,系统时间
问题分析1:数据库设计7-3
留言表(easybuy_comment):存放用户留言
字段名称
ec_id 编号
说
明
类
int(10)
型
备
注
主键,自动编号 非空 非空 非空
ec_reply
ec_content ec_create_time ec_reply_time ec_nick_name
实现前台首页商品展示功能 实现商品详情展示功能 实现近期商品浏览
第三次集中编码:C任务
任务说明
实现留言的发布功能
第三次集中编码
关键代码与提示
用户注册和登录功能
• 编写用于处理用户的Servlet • 编写业务逻辑层UserBiz接口及其实现类 • 编写数据访问层UserDao接口及其实现类 • 编写保存用户信息的方法 • 用户注册页面中,用户名、真实姓名、密码、性别为必 //编写保存用户信息的 DAO方法 填项,使用 对用户名进行验证 public void save(UserAjax user) throws SQLException { String sql = " insert into easybuy_user(eu_user_id, eu_user_name, " • 编写查询方法,根据用户名和密码实现登录用户查询
非空,0为女,1为男
非空
非空 1普通用户 2管理员
问题分析1:数据库设计7-2
新闻表(easybuy_news):存放新闻信息
字段名称
en_id
说
编号
明
类
int(10)
型
备
主键,自动编号
注
en_title
en_content en_create_time
标题
内容 录入日期
varchar(40)
varchar(1000) datetime
参考代码或结果演示
使用数据源访问数据库
• • • • 在Tomcat中配置context.xml文件 配置web.xml文件 使用JNDI查找数据源 <Resource auth="Container" 从数据源中获取连接
driverClassName="oracle.jdbc.driver.OracleDriver" maxActive="50" maxIdle="10" maxWait="10000" <resource-ref> try { name="jdbc/easybuy" <description>news DataSource</description > ctx = new InitialContext(); password="sys" <res-ref-name>jdbc/easybuy</res-ref-name> dataSource = type="javax.sql.DataSource" <res-type>javax.sql.DataSource</res-type> (DataSource) ctx.lookup("java:comp/env/jdbc/easybuy"); url="jdbc:oracle:thin:@10.0.0.75:1521:ORCL" <res-auth>Container</res-auth> } catch (NamingException e) { username="system" </resource-ref> e.printStackTrace(); /> }
牢记步骤口诀
搭建项目框架 基于分层开发
熟能生巧 善于总结并分享常见错误
要求在项目开发过程中记录遇到的问题并分享
阶段划分
第一次:
阶段项目指导-软件文档 需求讲解、需求分析
第二次:集中编码 第三次:集中编码 第四次:集中编码 第五次:集中编码 第六次:软件生命周期-测试 第七次:集中编码 第八次:作业提交
+ "eu_password,eu_sex, eu_birthday,eu_identity_code,eu_email, + " eu_mobile," eu_address,eu_status) values(?,?,?,?,?,?,?,?,?,?)"; //获取数据库连接 //设置SQL语句参数 //执行数据库查询操作 //释放资源
说 明
商品编号 商品名字 商品描述 商品价格 商品库存
类
int(10)
型
非空 非空 非空
备
注
主键,自动编号
varchar(20) varchar(100) decimal(10,2) int(10)
epc_id
epc_child_id ep_file_name
所属分类ID
所属二级分类ID 上传的文件名
第二次集中编码:A任务
任务说明(使用Jquery实现)
“我的易买”下拉菜单的自动显示与隐藏(登录后不 再显示登录、注册,而是显示“我的易买”菜单) 打开首页时弹出固定大小的广告页面窗口 随滚动条上下移动的广告图片
第二次集中编码:B任务
任务说明(使用Jquery实现)
对选购的商品实现删除和修改数量 自动计算金额
eo_user_address
eo_create_time eo_cost
用户地址
创建时间 金额
varchar(200)
datetime decimal(10,2)
非空
非空 非空
非空 1下单 2审核通过 3 配货 4送货中 5收货并确认
eo_status
eo_type
状态
付款方式
int(2)
int(2)
说
用户名
明
类
型
非空 非空
备
非空,主键
注
varchar(10)
varchar(20) varchar(20) bit date varchar(60) varchar(80) varchar(11) varchar(200) int(2)
真实姓名 密码 性别 出生日期 身份证号 email 手机 地址 类型
实训项目
夏汛 pluto_xun@qq.com
训练的技能点
数据库设计 面向对象程序设计 分层开发技术 使用JSP实现页面显示 使用Servlet进行流程控制 使用JavaBean实现业务封装 使用数据源+JDBC访问数据库 使用Oracle存储数据 使用JavaScript进行页面交互 使用Ajax增强用户体验
非空 1 货到付款 2 网 上支付
问题分析1:数据库设计7-7
订单详情表(easybuy_order_detail):存放订单 详细信息
字段名称
eod_id eo_id ep_id eod_quantity eod_cost
说 明
编号 订单ID 商品ID 数量 金额
Leabharlann Baidu
类
型
非空 非空 非空 非空
备
注
int(10,0) int(10,0) int(10,0) int(10,0) decimal(10,2)
第二次集中编码:C任务
任务说明
对用户的输入进行验证并提示(前端JQuery验证,登 录和注册页)
第二次集中编码:D任务
任务说明
实现登录界面和注册界面的注册码(使用kaptcha组件 )
第三次集中编码:A任务
任务说明
实现用户登录,注册功能
第三次集中编码:B任务
任务说明
第一次集中编码:A任务
任务说明
搭建项目框架 向教师提交本组各组员的分工、项目进度计划
第一次集中编码:B任务
任务说明
编写数据表,每个表至少添加三条记录 创建对数据表对应的实体类 为top.jsp添加连接
第一次集中编码:C任务
任务说明
新闻动态列表显示
第一次集中编码