J2EE 课程大作业报告书 网上图书系统.docx
- 文档编号:23258033
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:34
- 大小:744.67KB
J2EE 课程大作业报告书 网上图书系统.docx
《J2EE 课程大作业报告书 网上图书系统.docx》由会员分享,可在线阅读,更多相关《J2EE 课程大作业报告书 网上图书系统.docx(34页珍藏版)》请在冰豆网上搜索。
J2EE课程大作业报告书网上图书系统
课程大作业报告书
年月日
1引言
1.1项目背景
本项目作为J2EE课程的实习项目提出,希望通过《网上书店》电子商务网站的设计开发,了解软件文档的相关标准和编写原则,训练并掌握软件各类文档写作的技巧;另一方面,提高使用JSP开发J2EE架构的电子商务网站(B/S结构)的能力。
1.2开发本系统的目的意义
因特网将分布在世界各地的彼此分散的资源有效地组织起来,在世界范围内实现高效的信息传递和资源分享。
随着网络技术的发展和社会经济模式的飞速变化派生出一种新型的商务操作模式——电子商务。
电子商务(E-business)是指交易各方通过电子方式进行的商业交易,它是一种系统的,完整的电子商务运作,它包括方案的提出、设计、实施以及建立在其上的商务应用等各个方面[1]。
电子商务的发展对传统的Web技术提出了强有力的挑战。
由于电子商务的内部逻辑复杂,安全性要求高,商务形式发展变化快,这就要求Web技术有足够的复杂度和灵活性,以适应电子商务的需求。
J2EE(Java2PlatformEnterpriseEdition)脱颖而出并且日益完善,成为电子商务的主要开发技术。
1.3国内外研究现状
我国的网上书店基本上可以分为书店对书店的B2B模式,出版社对书店进行销售或者书店向出版社订货;书店对读者的B2C模式,出版社或书店直接对读者进行销售;另外还有对前面两者进行整合的BBC模式和仅从事出版物信息服务为出版社书店和读者提供信息发布平台的信息服务模式等。
目前我国80%的网上书店采用的是B2C模式。
鉴于我国人口数量多,网民增长迅速,应该说B2C模式有美好前景。
现今国内外电子商务应用框架的研究正处于发展阶段,但已经有了一些比较成熟的电子商务系统,如:
国内的当当书店,教育商城等,国外的亚马逊。
就采用的支持技术来看,使用ASP+COM/DCOM或者CGI+CORBA技术比较普遍。
CORBA是一种集成技术,起到对各种功能模块进行构件化处理的作用,但它不是编程技术:
DCOM/COM的缺陷是跨平台性差。
而J2EE技术提供了一个概念清晰、结构紧凑的分布计算模型和构件互操作的方法,特点是支持灵活应用构件技术开发软件。
J2EE技术与其它构件技术相比较,在集成性、可扩展性和安全性方面表现比较突出。
通过对目前电子商务平台研究现状的分析,总结出目前研究中的主要问题是大量早期开发的电子商务系统选取的技术存在缺陷,不适应跨操作系统平台的要求;另外一个主要的问题是目前电子商务系统的功能比较单一、固定、缺乏灵活性。
2开发环境及相关技术
2.1相关技术
2.1.1J2EE概述
J2EE是Sun公司推出的一套面向企业级应用的分布式体系,与传统的应用程序编程模型有了很大的差别,J2EE体系提供了一个基于组件的思想来设计、开发、装配及部署企业级应用。
J2EE为多层分布式企业计算提供了一套完整的技术和设施,它不仅继承了Java语言的平台独立的特点,而且结合了组件技术,为现代企业多层分布式应用提供一套完整的解决方案。
2.1.2J2EE的容器与服务
J2EE是一个基于组件容器模型的系统平台,其核心概念是容器。
所谓容器就是指为特定组件提供服务的一个标准化的运行环境,Java虚拟机就是个典型的容器。
J2EE应用组件可以安装部署到容器中去。
J2EE平台由四种称为容器的编程环境组成。
(1)EJB容器——提供适合于企业bean开发、部署以及运行时管理的环境。
企业bean是实现业务过程和实体的组件。
(2)Web容器——提供适合于Servlet和JSP(JavaserverPages)开发、部署以及运行时管理的环境。
这些Servlet和JSP组称为Web应用的可部署单元。
一个企业应用实现了一个企业应用的呈现逻辑。
(3)应用程序客户端容器——提供适合于执行J2EE应用客户的环境。
这个环境本质上就是J2SE。
(4)applet容器——提供适合于执行Javaapplet的环境。
这个环境通常被嵌入到一个浏览器中。
2.1.3Struts概述
Struts框架最早是作为ApacheJakarta项目的组成部分问世运做,它继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
Struts框架很好的结合了JSP,JavaServlet,JavaBean,Taglib等技术。
在Struts中,承担MVC中控制器角色的是ActionServlet。
ActionServlet是一个通用的控制组件。
这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。
它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。
另外控制组件也负责用相应的请求参数填充ActionForm(FromBean),并传给动作类(ActionBean)。
动作类访问核心商业逻辑,即访问JavaBean或调用EJB。
最后动作类把控制权传给后续的JSP文件,由JSP文件生成视图。
所有这些控制逻辑利用Struts-config.xml文件来配置。
在Struts框架中,视图主要由JSP生成页面完成,Struts提供丰富的JSP标签库,这有利于分开表现逻辑和程序逻辑。
模型以一个或多个JavaBean的形式存在。
在Struts中,主要存在三种Bean,分别是:
Action,ActionForm,EJB或者JavaBean。
Struts框架没有具体定义模型层的实现,在实际开发中,模型层通常是和业务逻辑紧密相连的,并且要对底层数据进行操作。
2.2开发环境
2.2.1集成开发环境:
MyEclipse
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。
Genuitec发布了MyEclipseEnterpriseWorkbench8,更智能、更快捷、更简单和更便宜的J2EE工具的新版本的诞生。
它的价格对于个人和企业开发人员来说都是非常有吸引力的。
这是J2EEIDE市场一个重量级的选手。
通过增加UML双向建模工具、WYSIWYG的JSP/Strutsdesigner、可视化的Hibernate/ORM工具、Spring和Webservices支持,以及新的Oracle数据库开发,MyEclipse8继续为业界提供全面的产品。
2.2.2Web应用服务器:
Tomcat
Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。
因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
2.2.3数据库服务器:
MySQL
MySQL是一个多用户、多线程的SQL数据库,是一个客户机/服务器结构的应用,它由一个服务器守护程序MySQL和很多不同的客户程序组成。
MySQL是目前运行速度最快的数据库服务器之一,而且MySQL对于商业和个人用户是免费的,MySQL的功能特点如下:
可以同时处理几乎不限数量的用户;处理多达50,000,000以上的记录;命令执行速度快;简单有效的用户特权系统。
3需求分析
电子商务以快捷方便安全的操作方式,成为了一种商品营销的捷径,在这个网上书店的应用中,用户的需求可分为客户需求和管理需求。
下面分别介绍两种身份用户的需求。
3.1功能需求
3.1.1用户功能需求
(1)用户可以浏览图书分类和推荐的图书
(2)用户可以根据分类,浏览某一类的图书列表
(3)用户可以查看具体某本书的介绍
(4)用户在图书浏览页面,单击添加按钮,把选定图书添加到购物车中
(5)用户可以单击购物车,查看购物车信息
(6)用户可以单击结账按钮下订单,但是需要登录后才能进行
(7)用户在注册页面,填写注册信息,确认有效注册为新用户
(8)用户在登录页面,填写用户名和密码,确认正确可以结账
3.1.2性能需求
整个系统符合客户的购物习惯,界面友好,操作简便。
设计和开发基于J2EE的网上书店系统,采取会员制、身份验证、信誉度指数等一系列措施,保证交易的成功率;要求具有强大的查询功能,快捷的找到感兴趣的商品;会员购物流程:
浏览、将商品放入购物车、去收银台。
每个会员有自己专用的购物车,可随时订购自己中意的商品结账完成购物;随时查看帐务明细、订单明细。
功能模块划分如图3-1所示。
4数据库设计
数据库设计包括设计概念数据模型、省城物理数据模型和数据库
4.1设计概念数据模型
E-R图,如图4-1所示。
4.2生成数据库
图书
用户
订单项
图书分类
订单
5功能模块设计
5.1DAO
IUserDAO.java
packageorg.apex.bookstore.dao;
importorg.apex.bookstore.vo.User;
publicinterfaceIUserDAO{
publicvoidsaveUser(Useruser);
publicUservalidateUser(Stringusername,Stringpassword);
publicbooleanexitUser(Stringusername);
}
BaseDAO.java
packageorg.apex.bookstore.dao;
importorg.hibernate.SessionFactory;
importorg.hibernate.classic.Session;
publicclassBaseDAO{
privateSessionFactorysessionFactory;
publicSessionFactorygetSessionFactory(){
returnsessionFactory;
}
publicvoidsetSessionFactory(SessionFactorysessionFactory){
this.sessionFactory=sessionFactory;
}
publicSessiongetSession(){
Sessionsession=sessionFactory.openSession();
returnsession;
}
}
IBookDAO.java
packageorg.apex.bookstore.dao;
importjava.util.List;
importorg.apex.bookstore.vo.Book;
publicinterfaceIBookDAO{
publicListgetBookByCatalogid(Integercatalogid);
publicListgetBookByCatalogidPaging(Integercatalogid,intcurrentPage,intpageSize);
publicintgetTotalByCatalog(Integercatalogid);
publicBookgetBookById(Integerbookid);
publicListgetRequiredBookByHql(Stringhql);
publicListgetNewBook();
}
ICatalogDAO.java
packageorg.apex.bookstore.dao;
importjava.util.List;
publicinterfaceICatalogDAO{
publicListgetAllCatalogs();
}
IOrderDAO.java
packageorg.apex.bookstore.dao;
importorg.apex.bookstore.vo.Orders;
publicinterfaceIOrderDAO{
publicOrderssaveOrder(Ordersorder);
}
5.2service.impl
BookService.java
packageorg.apex.bookstore.service.impl;
importjava.util.List;
importorg.apex.bookstore.dao.IBookDAO;
importorg.apex.bookstore.service.IBookService;
importorg.apex.bookstore.vo.Book;
publicclassBookServiceimplementsIBookService{
protectedIBookDAObookDAO;
publicListgetBookByCatalogid(Integercatalogid){
returnbookDAO.getBookByCatalogid(catalogid);
}
publicListgetBookByCatalogidPaging(Integercatalogid,intcurrentPage,intpageSize){
returnbookDAO.getBookByCatalogidPaging(catalogid,currentPage,pageSize);
}
publicintgetTotalByCatalog(Integercatalogid){
returnbookDAO.getTotalByCatalog(catalogid);
}
publicIBookDAOgetBookDAO(){
returnbookDAO;
}
publicvoidsetBookDAO(IBookDAObookDAO){
this.bookDAO=bookDAO;
}
publicBookgetBookById(Integerbookid){
returnbookDAO.getBookById(bookid);
}
publicListgetRequiredBookByHql(Stringhql){
returnbookDAO.getRequiredBookByHql(hql);
}
publicListgetNewBook(){
returnbookDAO.getNewBook();
}
}
CatalogService.java
packageorg.apex.bookstore.service.impl;
importjava.util.List;
importorg.apex.bookstore.dao.ICatalogDAO;
importorg.apex.bookstore.service.ICatalogService;
publicclassCatalogServiceimplementsICatalogService{
privateICatalogDAOcatalogDAO;
publicListgetAllCatalogs(){
returncatalogDAO.getAllCatalogs();
}
publicICatalogDAOgetCatalogDAO(){
returncatalogDAO;
}
publicvoidsetCatalogDAO(ICatalogDAOcatalogDAO){
this.catalogDAO=catalogDAO;
}
}
OrderService.java
packageorg.apex.bookstore.service.impl;
importorg.apex.bookstore.dao.IOrderDAO;
importorg.apex.bookstore.service.IOrderService;
importorg.apex.bookstore.vo.Orders;
publicclassOrderServiceimplementsIOrderService{
privateIOrderDAOorderDAO;
publicvoidsetOrderDAO(IOrderDAOorderDAO){
this.orderDAO=orderDAO;
}
publicOrderssaveOrder(Ordersorder){
returnorderDAO.saveOrder(order);
}
}
UserService.java
packageorg.apex.bookstore.service.impl;
importorg.apex.bookstore.dao.IUserDAO;
importorg.apex.bookstore.service.IUserService;
importorg.apex.bookstore.vo.User;
publicclassUserServiceimplementsIUserService{
privateIUserDAOuserDAO;
publicIUserDAOgetUserDAO(){
returnuserDAO;
}
publicvoidsetUserDAO(IUserDAOuserDAO){
this.userDAO=userDAO;
}
publicvoidsaveUser(Useruser){
this.userDAO.saveUser(user);
}
publicUservalidateUser(Stringusername,Stringpassword){
returnuserDAO.validateUser(username,password);
}
publicbooleanexitUser(Stringusername){
returnuserDAO.exitUser(username);
}
}
5.3Action
BookAction.java
packageorg.apex.bookstore.action;
importjava.util.List;
importjava.util.Map;
importorg.apex.bookstore.service.IBookService;
importorg.apex.bookstore.service.ICatalogService;
importorg.apex.bookstore.util.Pager;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassBookActionextendsActionSupport{
protectedICatalogServicecatalogService;
protectedIBookServicebookService;
protectedIntegercatalogid;
privateIntegercurrentPage=1;
privateStringbookname;
privateintminPrice;
privateintmaxPrice;
publicIntegergetCatalogid(){
returncatalogid;
}
publicvoidsetCatalogid(Integercatalogid){
this.catalogid=catalogid;
}
publicICatalogServicegetCatalogService(){
returncatalogService;
}
publicvoidsetCatalogService(ICatalogServicecatalogService){
this.catalogService=catalogService;
}
publicStringbrowseCatalog()throwsException{
Listcatalogs=catalogService.getAllCatalogs();
Maprequest=(Map)ActionContext.getContext().get("request");
request.put("catalogs",catalogs);
returnSUCCESS;
}
publicStringbrowseBookPaging()throwsException{
inttotalSize=bookService.getTotalByCatalog(catalogid);
Pagerpager=newPager(currentPage,totalSize);
//Listbooks=bookService.getBookByCatalogid(catalogid);
Listbooks=bookService.getBookByCatalogidPaging(catalogid,currentPage,pager.getPageSize());
Maprequest=(Map)ActionContext.getContext().get("request");
request.put("books",books);
request.put("pager",pager);
//购物车要返回时,需要记住返回的地址
Mapsession=ActionContext.getContext().getSession();
request.put("catalogid",catalogid);
returnSUCCESS;
}
publicStringbrowseBook()throwsException{
Listbooks=bookService.getBookByCatalogid(catalogid);
Maprequest=(Map)ActionContext.getContext().get("request");
request.p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 课程大作业报告书 网上图书系统 课程 作业 报告书 网上 图书 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)