JAVAWEB课程设计实验报告.docx
- 文档编号:10022458
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:12
- 大小:90.83KB
JAVAWEB课程设计实验报告.docx
《JAVAWEB课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《JAVAWEB课程设计实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
JAVAWEB课程设计实验报告
第一章概述
【实验目的】
1.掌握java-web网站设计的全过程;
2.进一步熟练Servlet技术、数据库、标签等一般java-web应用技术;
3.掌握整个java-web应用架构、目录结构以及服务器使用。
【需求分析】
1.设计一个较完善的网上军靴商店;
2.账户模块:
提供用户注册、登录,考虑用户数量增减,需要用数据库技术;
3.商品显示模块:
出于增加销售量考虑,需要有简单广告功能,并提供商品详细参数;推广商品,网站需要对热销商品展示以及商品分类显示、商品查询;
4.订单管理模块、订单详细信息模块:
显示已保存的订单的详细信息;
5.购物车模块:
添加/删除商品,结帐,显示订单信息。
第二章网上商店结构分析与设计
【前言】
随着信息化技术在生活中的应用越来越广泛,网上购物也逐渐成为人们的一种生活方式。
本系统正是基于这样一种环境下应运而生。
本电子商城为前台部分,前台主要实现会员的网上购物业务流程、用户注册、用户资料修改。
本商城主要利用javaservlet技术进行开发,有很强的逻辑性、可扩展性,便于维护。
商城界面设计主要实用了CSS,美化了店面。
其次本商城设计还使用了JSP技术、JDBC技术、JavaBean技术、css。
2.1系统结构图
图2.1系统整体框图
2.2系统功能分析
新品上市模块:
在首页框架中显示新品列表
畅销商品模块:
在首页框架中显示畅销列表
购物车模块:
显示已点击购买但没结账的商品
结账模块:
直接显示当前订单
查看商品信息模块:
显示当前商品详细信息
商品分类模块:
分类显示商品
全部商品模块:
显示商品列表
查询商品模块:
搜寻商品,显示商品信息
用户注册模块:
实现用户注册统功能分析
第三章详细设计
3.1数据库设计
商品表(shoe)
用户表(user)
用户订单表(orderinfo)
3.2商品模块实现
3.2.1模块功能实现和关键代码说明
先由JSP页面发出请求调用mypack包下GetshoeServlet,调用里面的doGet方法,然后调用db.executeQuery(sql)方法,查询数据库,查到热销商品的列表,保存进requeset对象的resault变量里,然后通过调用取出其中的值,显示到主页面。
商品查询模块按商品ID、关键词查询,商品显示模块使用同样方法根据不同条件查询数据库。
主要代码如下:
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
req.setCharacterEncoding("utf-8");
StringtypeId=req.getParameter("typeId");
StringshoeId=req.getParameter("shoeId");
Stringkeyword=req.getParameter("keyword");
Stringsql="select*fromshoe";
Stringsql1="select*fromshoewheretypeId=?
";
Stringsql2="select*fromshoewhereshoeId=?
";
List
HttpSessionsession=req.getSession();
BookDBdb=null;
CachedRowSetresult=null;
try{
db=newBookDB();
if(typeId!
=null){
if(typeId.equals("0")){
result=db.executeQuery(sql);
}else{
result=db.executeQuery(sql1,typeId);
}
while(result.next()){
Shoeshoe=newShoe();
shoe.setType(result.getString
(1));
shoe.setShoeId(result.getInt
(2));
shoe.setName(result.getString(3));
shoe.setPrice(result.getFloat(4));
shoelist.add(shoe);
}
session.setAttribute("shoelist",shoelist);
resp.sendRedirect(req.getContextPath()+"/catalog.jsp");
}
if(shoeId!
=null){
result=db.executeQuery(sql2,Integer.parseInt(shoeId));
if(result.next()){
ShoeshoeDetail=newShoe();
shoeDetail.setType(result.getString
(1));
shoeDetail.setShoeId(result.getInt
(2));
shoeDetail.setName(result.getString(3));
shoeDetail.setPrice(result.getFloat(4));
shoeDetail.setSale_amount(result.getInt(5));
session.setAttribute("shoedetail",shoeDetail);
}
resp.sendRedirect(req.getContextPath()+"/shoedetail.jsp");
}
if(keyword!
=null){
result=db.executeQuery(sql);
while(result.next()){
if(result.getString(3).contains(keyword)){
Shoeshoe=newShoe();
shoe.setType(result.getString
(1));
shoe.setShoeId(result.getInt
(2));
shoe.setName(result.getString(3));
shoe.setPrice(result.getFloat(4));
shoelist.add(shoe);
}
}
session.setAttribute("shoelist",shoelist);
resp.sendRedirect(req.getContextPath()+"/catalog.jsp");
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
3.3用户注册/登录模块实现
3.3.1模块功能实现和关键代码说明
Begin
调用/ARMY-SHOES/UserLoginServlet和UserRegistServlet
返回
查询/更新数据库
显示regist.jsp/login.jsp
先由JSP页面发出请求调用mypack包下UserRegistServlet/UserLoginServlet,调用里面的doGet方法,然后调用db.executeQuery(sql1,username,password)方法,更新数据库。
主要代码如下:
登录(UserLoginServlet):
HttpSessionsession=req.getSession();
try{
db=newBookDB();
result=db.executeQuery(sql1,username,password);
if(result.next()){
user=newUser();
user.setUsername(result.getString
(1));
user.setPassword(result.getString
(2));
user.setMail(result.getString(3));
user.setTel(result.getString(4));
session.setAttribute("user",user);
resp.sendRedirect(req.getContextPath()+"/index.jsp");
}else{
resp.sendRedirect(req.getContextPath()+"/login.jsp?
statu=no");
}
注册(UserRegistServlet):
Stringusername=req.getParameter("username");
Stringpassword=req.getParameter("password");
Stringmail=req.getParameter("mail");
Stringtel=req.getParameter("tel");
Stringsql1="select*fromuserwhereusername=?
";
Stringsql2="insertintouservalues(?
?
?
?
)";
BookDBdb;
CachedRowSetresult=null;
try{
db=newBookDB();
result=db.executeQuery(sql1,username);
if(result.next()){
resp.sendRedirect(req.getContextPath()+"/regist.jsp?
statu=no");
}else{
db.executeUpdata(sql2,username,password,mail,tel);
resp.sendRedirect(req.getContextPath()+"/regist.jsp?
statu=ok");
}
3.4购物车模块实现
3.4.1模块功能实现和关键代码说明
Begin
调用mypack包下ShoppingCart里的add()/remove()/getTotal()方法
返回item
查询数据库
显示showCart.jsp
图3.1购物车模块流程图
先由JSP页面发出请求调用org.action包下的findId方法,findId调用DaoImpl包里的findOrderById,把得到的结果,保存到session里取名order1通过orderdetail里取变量得到这个值,显示到主页面。
主要代码如下:
Add()方法:
publicsynchronizedvoidadd(StringshoeId,Shoeshoe){
if(items.containsKey(shoeId)){
ShoppingCartItemscitem=(ShoppingCartItem)items.get(shoeId);
scitem.incrementQuantity();
}else{
ShoppingCartItemnewItem=newShoppingCartItem(shoe);
items.put(shoeId,newItem);
}
numberOfItems++;
}
Remove()方法:
publicsynchronizedvoidremove(StringshoeId){
if(items.containsKey(shoeId)){
ShoppingCartItemscitem=(ShoppingCartItem)items.get(shoeId);
scitem.decrementQuantity();
if(scitem.getQuantity()<=0)
items.remove(shoeId);
numberOfItems--;
}
}
Gettotal()方法:
publicsynchronizeddoublegetTotal(){
doubleamount=0.0;
for(Iteratori=getItems().iterator();i.hasNext();){
ShoppingCartItemitem=(ShoppingCartItem)i.next();
Shoeshoe=(Shoe)item.getItem();
amount+=item.getQuantity()*shoe.getPrice();
}
returnroundOff(amount);
}
privatedoubleroundOff(doublex){
longval=Math.round(x*100);//cents
returnval/100.0;
}
publicsynchronizedvoidclear(){
items.clear();
numberOfItems=0;
}
}
3.5结算功能模块
从showcart.jsp转到cashier.jsp,调用HandleOrderServlet的db.buyBooks(cart)方法和db.executeUpdata()方法更新数据库。
主要代码如下:
Stringsql="insertintoorderinfovalues(?
?
?
?
?
)";
BookDBdb;
try{
db=newBookDB();
db.buyBooks(cart);
db.executeUpdata(sql,orderId,username,cardname,cardnum,payment);
resp.sendRedirect(req.getContextPath()+"/cashier.jsp?
makeorder=ok");
}catch(Exceptione){
.printStackTrace();
}
第四章总结
【技术总结】
1.一个Servlet往往对应了不同的操作,一个对象的增删改查,都放在了一个Servlet里面实现,这样设计可有效减少Servlet数量;
2.对于网页页面效果要求较高的时候,多采用JSP来编写,对于后台处理要求较高时,多采用Servlet。
3.尽量使用和数据库版本一致的驱动,否则jdbc连接可能不正常;
4.在编写样式表之前一定要注意CSS文档的编码类型一定要和HTML文档的字符集类型一致。
【心得体会】
通过这次课程设计,使我加深了对javaweb应用结构的理解,掌握了javaweb应用设计的流程及各个模块间协同关系,学会了使用css美化个人设计。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVAWEB 课程设计 实验 报告