JavaEE实验7.docx

上传人:b****7 文档编号:10063058 上传时间:2023-02-08 格式:DOCX 页数:14 大小:125.02KB
下载 相关 举报
JavaEE实验7.docx_第1页
第1页 / 共14页
JavaEE实验7.docx_第2页
第2页 / 共14页
JavaEE实验7.docx_第3页
第3页 / 共14页
JavaEE实验7.docx_第4页
第4页 / 共14页
JavaEE实验7.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

JavaEE实验7.docx

《JavaEE实验7.docx》由会员分享,可在线阅读,更多相关《JavaEE实验7.docx(14页珍藏版)》请在冰豆网上搜索。

JavaEE实验7.docx

JavaEE实验7

实验七图书在线销售系统

(一)

一、实验目的

掌握Spring框架的基本使用方法,能够完成Java对象及对象之间的依赖注入定义,实现对象与对象间控制反转。

掌握使用Spring将Struts、Spring、Hibernate三个框架在WEB应用中的集成。

掌握图书在线销售系统主要功能模块的实现思路与方法。

二、实验内容

1、实现首页中的新书列表功能。

2、实现将图书添加到购物车功能。

3、实现购物车中图书名称、价格、数量,总价的显示功能。

三、实验方法和步骤

1、准备:

安装Mysql数据库服务器。

2、执行bookstore.sql.txt中的SQL命令,创建项目包括的数据表。

--

--数据库:

`bookstore`

--

createdatabasebookstore;

usebookstore;

----------------------------------------------------------

--

--表的结构`book`

--

CREATETABLE`book`(

`bookid`int(11)NOTNULLauto_increment,

`catalogid`int(11)defaultNULL,

`bookname`varchar(20)NOTNULL,

`price`int(11)NOTNULL,

`picture`varchar(30)NOTNULL,

`recommend`int(11)NOTNULL,

PRIMARYKEY(`bookid`),

KEY`FK_Relationship_3`(`catalogid`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8AUTO_INCREMENT=15;

--

--导出表中的数据`book`

--

INSERTINTO`book`(`bookid`,`catalogid`,`bookname`,`price`,`picture`,`recommend`)VALUES

(1,1,'书1',11,'a19.jpg',0),

(2,2,'书2',22,'a15.jpg',1),

(3,2,'书3',33,'a15.jpg',1),

(5,2,'书5',55,'a15.jpg',1),

(6,2,'书6',66,'a15.jpg',1),

(7,2,'书7',77,'a15.jpg',1),

(8,2,'书8',88,'a15.jpg',1),

(9,2,'书9',99,'a15.jpg',1),

(10,2,'书10',10,'a15.jpg',1),

(11,2,'书11',11,'a15.jpg',1),

(12,2,'书12',12,'a15.jpg',1),

(13,2,'书13',13,'a15.jpg',1),

(14,2,'书14',14,'a15.jpg',1);

----------------------------------------------------------

--

--表的结构`catalog`

--

CREATETABLE`catalog`(

`catalogid`int(11)NOTNULLauto_increment,

`catalogname`varchar(20)NOTNULL,

PRIMARYKEY(`catalogid`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8AUTO_INCREMENT=3;

--

--导出表中的数据`catalog`

--

INSERTINTO`catalog`(`catalogid`,`catalogname`)VALUES(1,'类别1'),(2,'类别2');

----------------------------------------------------------

--

--表的结构`orderitem`

--

CREATETABLE`orderitem`(

`orderitemid`int(11)NOTNULLauto_increment,

`orderid`int(11)defaultNULL,

`bookid`int(11)defaultNULL,

`quantity`int(11)NOTNULL,

PRIMARYKEY(`orderitemid`),

KEY`FK_Relationship_2`(`orderid`),

KEY`FK_Relationship_4`(`bookid`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8AUTO_INCREMENT=1;

--

--导出表中的数据`orderitem`

--

 

----------------------------------------------------------

--

--表的结构`orders`

--

CREATETABLE`orders`(

`orderid`int(11)NOTNULLauto_increment,

`userid`int(11)defaultNULL,

`orderdate`timestampNOTNULLdefaultCURRENT_TIMESTAMPonupdateCURRENT_TIMESTAMP,

PRIMARYKEY(`orderid`),

KEY`FK_Relationship_1`(`userid`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8AUTO_INCREMENT=1;

--

--导出表中的数据`orders`

--

----------------------------------------------------------

--

--表的结构`user`

--

CREATETABLE`user`(

`userid`int(11)NOTNULLauto_increment,

`username`varchar(20)NOTNULL,

`password`varchar(20)NOTNULL,

`sex`varchar(4)defaultNULL,

`age`int(11)defaultNULL,

PRIMARYKEY(`userid`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8AUTO_INCREMENT=2;

--

--导出表中的数据`user`

--

INSERTINTO`user`(`userid`,`username`,`password`,`sex`,`age`)VALUES

(1,'admin','admin',NULL,NULL)

3、编写功能代码

第一步:

实现数据层的对象关系映射。

(1)编写可保存图书信息的可持久化对象:

org/apex/bookstore/vo/Book.java

packageorg.apex.bookstore.vo;

importjava.util.HashSet;

importjava.util.Set;

/**

*Bookentity.

*

*@authorMyEclipsePersistenceTools

*/

publicclassBookimplementsjava.io.Serializable{

//Fields

privateIntegerbookid;

privateCatalogcatalog;

privateStringbookname;

privateIntegerprice;

privateStringpicture;

//Constructors

/**defaultconstructor*/

publicBook(){

}

/**minimalconstructor*/

publicBook(Stringbookname,Integerprice,Stringpicture){

this.bookname=bookname;

this.price=price;

this.picture=picture;

}

/**fullconstructor*/

publicBook(Catalogcatalog,Stringbookname,Integerprice,

Stringpicture){

this.catalog=catalog;

this.bookname=bookname;

this.price=price;

this.picture=picture;

}

//Propertyaccessors

publicIntegergetBookid(){

returnthis.bookid;

}

publicvoidsetBookid(Integerbookid){

this.bookid=bookid;

}

publicCataloggetCatalog(){

returnthis.catalog;

}

publicvoidsetCatalog(Catalogcatalog){

this.catalog=catalog;

}

publicStringgetBookname(){

returnthis.bookname;

}

publicvoidsetBookname(Stringbookname){

this.bookname=bookname;

}

publicIntegergetPrice(){

returnthis.price;

}

publicvoidsetPrice(Integerprice){

this.price=price;

}

publicStringgetPicture(){

returnthis.picture;

}

publicvoidsetPicture(Stringpicture){

this.picture=picture;

}

}

(2)编写Hibernate映射文件以实现ORM:

org/apex/bookstore/vo/Book.hbm.xml

xmlversion="1.0"encoding="utf-8"?

>

DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"

"

--

MappingfileautogeneratedbyMyEclipsePersistenceTools

-->

(3)在Spring配置文件applicationContext.xml中的sessionFactoryBean配置中合适的位置添加映射文件声明:

org/apex/bookstore/vo/Book.hbm.xml

第二步:

实现DAO、Service、Action三层处理代码。

(1)在org/apex/bookstore/dao/impl/BookDAO.java中实现以下方法:

publicListgetNewBook(){

Sessionsession=getSession();

Queryquery=session.createQuery("fromBookb");

query.setFirstResult(0);

query.setMaxResults(5);

Listbooks=query.list();

session.close();

returnbooks;

}

(2)在org/apex/bookstore/action/BookAction.java中实现以下方法:

publicStringnewBook()throwsException{

Listbooks=bookService.getNewBook();

Maprequest=(Map)ActionContext.getContext().get("request");

request.put("books",books);

returnSUCCESS;

}

第三步:

通过applictionContext.xml完成Bean配置。

(1)配置struts.xml,添加对newBookAction的请求处理:

/newBook_succcess.jsp

(2)修改applictionContext.xml内容,实现依赖注入以及ActionBean配置。

a)声明bookDAOBean,该Bean从已声明的baseDAO派生:

class="org.apex.bookstore.dao.impl.BookDAO"parent="baseDAO">

b)声明bookServiceBean并注入BookDAO。

c)修改bookActionBean配置,注入bookService依赖:

第四步:

实现视图。

(1)将视图newBook_succcess.jsp文件修改为以下内容:

<%@pagecontentType="text/html;charset=gb2312"%>

<%@taglibprefix="s"uri="/struts-tags"%>

新书展示

iteratorvalue="#request['books']"id="book">

propertyvalue="#book.picture"/>"/>

propertyvalue="#book.bookname"/>


价格:

propertyvalue="#book.price"/>元

数量:

propertyvalue="#book.bookid"/>"name="bookid">

iterator>



(2)在index.jsp页面合适的位置用以下内容替换。

该服务器端strutstag的作用是嵌入newBook请求的响应内容:

actionname="newBook"executeResult="true"/>

4、运行结果

首页显示用户书籍信息如图1所示。

图1首页运行图

添加数据到购物车的运行结果如图2所示。

图2购物车运行图

四、实验思考

1、Hibernate、Spring、Struts三个框架的作用分别是什么?

Hibernate框架用于与数据库内的表进行映射,形成实体类便于数据操作;

Spring框架是对业务层代码进行处理的;

Struts框架则是用于与界面相互联系,实现数据请求的操作。

2、Book.hbm.xml、struts.xml、applicationContext.xml文件中的粗体大号字显示的部分的作用是什么?

Book.hbm.xml中的table指的是实体类所映射的数据表表名;many-to-one表示与catalog是一对多的关系;columnname表示与catalog所相连的字段是catalogid。

Struct.xml中的

/newBook_succcess.jsp表示处理成功后返回到/newBook_succcess.jsp。

applicationContext.xml中的

propertyref则是用于注入一个已存在的JavaBean。

3、视图newBook_succcess.jsp文件中粗体大号字显示的部分的作用是什么?

用于向后台提交addToCart.action的post请求。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1