JAVAWEB课程设计报告.docx
《JAVAWEB课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVAWEB课程设计报告.docx(19页珍藏版)》请在冰点文库上搜索。
JAVAWEB课程设计报告
海贼王专柜
绪论
系统开发背景
本项目作为《JAVAWEB应用开发技术》课程的实习项目提出,希望通过《海贼王专柜》电子商务网站的设计开发,提高使用JSP开发J2EE架构的电子商务网站(B/S结构)的能力;了解软件文档的相关标准和编写原则,训练并掌握软件各类文档写作的技巧。
海贼王专柜是一种高质量,更快捷,更方便的购物方式。
海贼王专柜不仅可用于有关海贼王商品的在线销售,也有各种商品的在线销售。
而且网站式的商店对商品的管理更加合理化,信息化。
网上商店系统现状
网上商店在我国刚起步,但发展很快。
随着我国互联网的更加普及和网上商店的更趋成熟,会有越来越大的消费群体,市场潜力会得到充分发挥。
为了保护传统商店的投资,网上商店解决方案应切合传统商店实际的需求和发展的趋向,使投入回报和管理效益最大化,传统商店在实施上网方案的之前,必须对一系列问题进行科学的论证,如网上商店的需求分析、网上商店总体规划、网上商店系统的功能和实施方案、网上商店的传播与推广、运行网上商店系统的软件和硬件配置、网上商店的管理系统和管理方法等等。
主要工作
用户分为注册于非注册用户,区别是能否对商品进行购买。
管理员可执行三种基本操作:
对用户的查看、冻结;对商品的上传、修改;对订单的查看、执行、删除操作。
本项目主要实现了三个大的基本功能:
即
1:
浏览用户的对商品的浏览、搜索、登录。
2:
用户对商品的浏览购买、及修改。
系统需求分析
系统功能需求
客户功能需求
通过商品名对库中的商品进行查找,显示到客户端
对用户的登陆操作
登陆后可将商品加入到购物车
查看购物车中现有商品、对购物车中的商品数量进行修改、清空购物车
管理员功能需求
管理员是管理需求的应用人员,分配一个账号为此,可实现对前端信息的管理和后台信息的修改等,管理需求如下:
商品信息的维护:
增加、修改、删除操作
用户信息的管理:
对用户的信息的查看、修改、删除等操作
订单管理:
查看当前订单的状态、删除订单等操作
开发平台
集成开发环境:
Myeclipse7.5
简单而言,Myeclipse是Eclipse的一个插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错,而且6.0版本以后都不需要安装Eclipse了,7.5以后连服务器都不需配置安装了,它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
Web应用服务器:
Tomcat6.0
Tomcat6.0是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。
实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
数据库服务器:
SqlServer2005
SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
此外SQLServer2005结合了分析、报表、集成和通知功能。
系统设计与实现
系统整体设计
浏览者主要是对信息的显示、收集的工作,其中没有逻辑处理代码。
分为两类:
用户和管理员,用户是指前端用户可见部分,注册用户和游客均可浏览,管理员部分仅是管理员账号可操作部分。
此部分为jsp页面,页面大体设计如下:
(图)
这是页面的总体框架设计情况,共划分了四个主区域:
header,导航栏,main,bottom
Header包含页面头的部信息,各页面基本相同:
header1,header2;
其中导航栏部分又包含八部分;
Main包含部分比较多,因为导航栏的改变而改变;
bottom包含页脚部分:
bottom,bottom1,bottom2。
这样划分页面可以做到页面的复用性,提高了页面的灵活性。
每个页面只需编写不同的小部分便可,减少了代码的重复、冗余。
控制器中的Form其实也是一种bean类,为Action服务,其中包含了相对应的Action中配置的页面的可收集内容,负责由ActionServlet将该页面请求中内容剥离放入Action配置的对应的Form中,然后作为参数传递给Action,所以Form中并没有实际的处理方法,只有一些对应页面的属性,和对应属性的getter/setter方法,如果有必要验证页面传来的参数是否合法可以重写validate()方法来实现对页面中属性的验证,验证不通过责由核心控制器返回到请求页面至客户端,由于本项目由Validator框架来实现的验证所以没有实现validate方法。
只有对应的getter/setter方法。
Action部分:
此部分为中间组件,只是起到了调用逻辑的功能,接受到
ActionServlet传来的参数后调用相应的Bean完成相应的逻辑。
具体分类表如下:
Action
逻辑方法
usershopping
接受到提交订单页面传来的请求,处理相应的逻辑,将客户的订单按提交得到的数据保存到库中并与对应的用户名关中。
LoginCheckServle
接受到客户登陆请求,并取出密码用户名,到库中校验,返回相应的操作(已注册予以登陆并取出相应的订单放入用户对象中、已注册但被冻结不予以登陆资格、未注册密码错误)
LogoutServlet
销毁当前客户对应的Session,返回到主面
PieceSearchServlet
该Action接受搜索引擎传递过来的请求,然后调用逻辑bean,将参数作为关键字在库中查找相对应的符合结果,将所有的结果返回到页面上进行显示。
CustomerDaoJDBCImpl
通过与数据库连接,查询用户信息
GoodsCatalogDaoJDBCImpl
通过与数据库连接,查询获取商品分类信息
GoodsDaoJDBCImpl
通过与数据库连接,查询获取商品分类信息
searchCatalog
该Action接受请求后,调用逻辑bean查询该图书分类的所有有关书籍信息,返回到页面上
GoodsCatalog
获取商品详细信息
ShoppingCartItem
Buy:
接受客户传来的请求,该请求中包含客户要放入购物车的书籍的id,然后搜索购物车中是否有该书籍,有则将书籍的数目+1,没有则实例一个item,数量为1,放入车中。
Modify:
提供了修改书籍数量的操作,按对应的item的id重新对车中的书籍数量遍历修改
ShoppingCart
Clear:
将购物车清空,并将session中信息清空
Delete:
接受用户要删除的书籍id,然后从车中将书籍删除
各功能的实现
搜索:
通过的书名对库中的书籍进行查找,显示到客户端
以下为搜索对应的Action代码:
publicclassPieceSearchServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Stringname=request.getParameter("goods");
GoodsDaodao=newGoodsDaoJDBCImpl();
Listgoods=dao.findGoodsByName(name);
request.setAttribute("results",goods);
RequestDispatcherdispatcher=request.getRequestDispatcher("piecesearch.jsp");
dispatcher.forward(request,response);
}
}
本Action主要是从页面请求中取出书籍的检索关键字,然后交给后台dao.findGoodsByName(name)方法来查找,该方法返回一个linkedlist类型,其中包含了根据关键字检索到数目所有结果.然后返回到提交请求的页面.
截图:
对用户的登陆、注册操作
用户的登陆部分:
(代码)
LoginCheckServlet的方法:
packagecn.sdcet.onepiece.web;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcn.sdcet.onepiece.dao.CustomerDao;
importcn.sdcet.onepiece.dao.jdbc.CustomerDaoJDBCImpl;
importcn.sdcet.onepiece.domain.Customer;
publicclassLoginCheckServletextendsHttpServlet{
/**
*Constructoroftheobject.
*/
publicLoginCheckServlet(){
super();
}
/**
*Destructionoftheservlet.
*/
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
/**
*ThedoGetmethodoftheservlet.
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
/**
*ThedoPostmethodoftheservlet.
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringname=request.getParameter("username");
Stringpasswd=request.getParameter("password");
CustomerDaodao=newCustomerDaoJDBCImpl();
if(dao.hasMatchUser(name,passwd)){
HttpSessionsession=request.getSession();
Customercustomer=dao.findCustomerByName(name);
session.setAttribute("user",customer);
RequestDispatcherdispatcher=request.getRequestDispatcher("index.jsp");
dispatcher.forward(request,response);
}else{
request.setAttribute("message","用户名或密码不正确");
RequestDispatcherdispatcher=request.getRequestDispatcher("login.jsp");
dispatcher.forward(request,response);
}
}
}
jsp页面:
<%
Stringmessage=(String)request.getAttribute("message");
Stringname=request.getParameter("username");
if(name==null){
name="";
}
%>
用户登录
|
用户名:
"/>
|
密码: |
|
|
<%
if(message!
=null){
%>
<%=message%>
在这里是将客户登陆时传递过来的用户名、密码取出来调用Dbbean的方法来查找是否存在该用户,查找的时候先从管理员表里查找,然后再查找客户表,最后返回一个包含客户信息的Customer类事例,两表都不存在信息则返回一个简单的错误页面
}该方法主要是接受页面传来的参数,封装成一个Item,然后从session中取出购物车(没有则实例一个),然后查看该车中是否包含该Item,有则Item的quantity的数量+1;