JAVAWEB课程设计实验报告Word文档下载推荐.docx
《JAVAWEB课程设计实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JAVAWEB课程设计实验报告Word文档下载推荐.docx(12页珍藏版)》请在冰点文库上搜索。
本商城主要利用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<
Shoe>
shoelist=newArrayList<
();
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!
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);
/shoedetail.jsp"
if(keyword!
result=db.executeQuery(sql);
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);
}
}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();
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));
user"
user);
resp.sendRedirect(req.getContextPath()+"
/index.jsp"
}else{
/login.jsp?
statu=no"
注册(UserRegistServlet):
Stringusername=req.getParameter("
username"
Stringpassword=req.getParameter("
password"
Stringmail=req.getParameter("
mail"
Stringtel=req.getParameter("
tel"
select*fromuserwhereusername=?
insertintouservalues(?
?
)"
BookDBdb;
result=db.executeQuery(sql1,username);
if(result.next()){
/regist.jsp?
}else{
db.executeUpdata(sql2,username,password,mail,tel);
statu=ok"
3.4购物车模块实现
3.4.1模块功能实现和关键代码说明
调用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){
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(?
db.buyBooks(cart);
db.executeUpdata(sql,orderId,username,cardname,cardnum,payment);
resp.sendRedirect(req.getContextPath()+"
/cashier.jsp?
makeorder=ok"
.printStackTrace();
第四章总结
【技术总结】
1.一个Servlet往往对应了不同的操作,一个对象的增删改查,都放在了一个Servlet里面实现,这样设计可有效减少Servlet数量;
2.对于网页页面效果要求较高的时候,多采用JSP来编写,对于后台处理要求较高时,多采用Servlet。
3.尽量使用和数据库版本一致的驱动,否则jdbc连接可能不正常;
4.在编写样式表之前一定要注意CSS文档的编码类型一定要和HTML文档的字符集类型一致。
【心得体会】
通过这次课程设计,使我加深了对javaweb应用结构的理解,掌握了javaweb应用设计的流程及各个模块间协同关系,学会了使用css美化个人设计。