SSH课程设计报告Word格式文档下载.docx
《SSH课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SSH课程设计报告Word格式文档下载.docx(22页珍藏版)》请在冰点文库上搜索。
具体做法是:
用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(DataAccessObjects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
系统的基本业务流程是:
在表示层中,首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。
在业务层中,管理服务组件的SpringIoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
3网上拍卖的设计
3.1功能设计
“网上拍卖系统”包含八个功能。
①“注册”功能:
对于首次登录该系统的用户,要先进行注册。
②“登录”功能:
只有登录的用户才可以对系统做相应的操作。
③“操作商品”功能:
对于登录后的用户可以操作商品,发布新商品。
④“操作商品种类”功能:
对于登录后的用户可以操作商品种类,添加商品种类。
⑤“竞拍商品”功能:
对于登录后的用户可以参加处于拍卖状态商品的竞拍。
⑥“浏览商品”功能:
用户可以通过该用例浏览流拍状态的商品和处于拍卖状态的商品。
⑦“查看商品”功能:
用户可以通过该用例完成查看自己竞得商品和查看自己正在竞标的物品。
⑧“发送”功能:
用户可以通过该用例向管理员发送。
3.2页面设计
详细介绍的各项功能是通过哪些页面呈现的,各个页面之间的组织结构图及相应文字说明。
、、
登录页(login.jsp):
系统为注册的用户提供一个进入系统并使用系统功能的入口。
登出页(logout.jsp):
用户离开系统时显示的页面。
注册新用户页(newuser.jsp):
系统提供给普通用户的注册功能。
只有注册用户才可以参加竞拍并管理自己的物品。
管理商品页(mrgitem.jsp):
系统为注册用户提供商品管理功能。
管理分类页(mrgkind.jsp):
系统为注册用户提供商品分类管理功能。
查看竞得商品页(viewItemSu.jsp):
系统为注册用户提供查看用户自己成功竞得的商品的功能。
查看自己的竞标(viewBid.jsp):
系统为注册用户提供查看用户自己正在参与竞价的商品。
浏览流拍商品(viewFailItem.jsp):
所有用户都可以浏览处于流拍状态的商品。
浏览拍卖商品(viewKind.jsp):
所有用户都可以浏览正在拍卖的商品。
查看商品详细信息(viewDetail.jsp):
所有用户都可以查看正在拍卖物品的详细信息。
但要参与竞拍必须是注册用户。
提示错误信息页面(error.jsp):
所有操作错误的提示信息页面。
3-2 系统层次概框图
3.3数据库设计
详细介绍所用到的数据库的结构,包括有哪些表,表结构是什么,每个表保存哪些数据,表表之间的关系是什么?
根据系统的需求,数据库中需要创建以下数据表。
①用户信息表:
用于存放注册用户的资料以及用户登录情况。
②商品分类信息表:
商品的主要分类,和分类信息的描述。
③商品信息表:
记录用户发布的商品的信息。
④用户出价信息表:
用于记录用户对相关商品的出价信息。
⑤商品状态信息表:
用于存放商品状态信息。
该系统数据库的E-R图,如图3-3所示:
该数据库的数据逻辑结构图如下表所示:
表3-3-1 auction_user用户信息表
Field
Type
Null
Key
Default
Comment
user_id
int
-
PRI
用户标识
username
varchar
用户名
password
用户密码
email
用户
如表4-2所示为商品分类信息表,记录了所有商品分类的信息。
表3-3-2kind商品子分类信息表
kind_id
分类的标识
kind_name
分类的名称
kind_desc
Yes
分类的描述
如表4-3所示为记录用户所发布的商品的详细信息的表。
表中item_id为主键设为自动增长。
owner_id为auction_user表中user_id的外键,kind_id为kind表中kind_id的外键,csub为subsort表中ssid的外键,这些外键能保证商品的完整性。
cend表示商品的拍卖是否已经结束。
表3-3-3item商品信息表
item_id
主键,递增
owner_id
FK
发布者的标识
item_name
商品名称
商品分类
item_pic
商品图片地址
item_desc
商品描述
winer_id
拍买者的标识
addtime
date
开始日期
endtime
结束日期
init_price
double
初始价钱
max_price
最高价钱
state_id
商品状态
如表4-4所示为记录用户对商品出价情况的信息表。
表中bid_id为主键设为自动增长。
item_id为商品表item中item_id的外键,这样可以保证用户的出价都是针对已经发布的商品发出的。
user_id为出价的用标识。
howmuch代表用户对此商品出了多少钱。
表3-3-4 bid用户出价信息表
bid
出价的标识
对就的商品标识
出价的用户名
bid_date
出价的时间
bid_price
出了多少钱
如表4-5所示为记录用户发布的商品的状态的信息表。
表中state_id为主键设为自动增长。
表3-3-5 state用户出价信息表
商品状态的标识
state_name
商品状态的名称
4网上拍卖的实现
4.1实现浏览拍卖物品种类页面功能实现
1.表示层实现
点击浏览拍卖物品种类时,就直接将请求转发给动作viewKind.do处理。
它由Struts的Action类的子类实现,在其中加入业务逻辑并将主页实际所需要的数据从数据库中提取出来保存到request对象或其他对象中,最后转向实际的主页面(页面名称为“viewKind.jsp”)即可。
在struts-config.xml文件中的设置如下:
<
actionpath="
/viewKind"
type="
org.springframework.web.struts.DelegatingActionProxy"
scope="
request"
validate="
false"
parameter="
method"
>
<
forwardname="
success"
path="
/WEB-INF/jsp/viewKind.jsp"
/>
/action>
点击主页导航栏上浏览拍卖物品即可进入浏览物品种类页面。
如图5-1所示。
图4-1浏览物品种类界面
商品分类区动态实现代码如下:
logic:
iterateid="
kind"
name="
kinds"
indexId="
index"
trclass="
pt9"
height="
24"
tdbgcolor="
#FFFFFF"
种类名<
/td>
ahref='
viewItem.dokindId=<
bean:
writename="
property="
id"
'
kindName"
/a>
/tr>
种类描述<
writename="
property="
kindDesc"
/logic:
iterate>
其中,使用Struts的logic及bean标签循环显示商品分类信息。
在遍历中用bean:
write元素输出。
2.实现业务逻辑
浏览拍卖物品种类页面的显示涉及到得业务逻辑为org.yeeku.struts包下的ViewKindAction类,他用于从数据库中调出数据供页面显示。
其中涉及商品类别的分类显示代码如下:
importjavax.servlet.http.HttpSession;
importjava.util.List;
importorg.yeeku.service.AuctionManager;
importorg.yeeku.exception.AuctionException;
importorg.yeeku.struts.base.BaseAction;
/**
*authorshmsonghongmei_529163.
*version1.0
*处理商品种类显示动作
*/
publicclassViewKindActionextendsBaseAction
{
publicViewKindAction()
{
}
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
javax.servlet.http.HttpServletRequestrequest,javax.servlet.http.HttpServletResponseresponse)
throwsAuctionException
Listkinds=mgr.getAllKind();
request.setAttribute("
kinds);
//将找到的对象保存到request对象再传入
request.setAttribute("
errMsg"
request.getAttribute("
));
returnmapping.findForward("
);
}
其中BaseAction封装了系统所有逻辑功能的实现类org.yeeku.service包下的AuctionManager接口,其实现类为AuctionManagerImpl。
主要包含的方法如下:
ListgetItemByWiner(intwinerId)throwsAuctionException;
//根据赢取者查询物品
ListgetFailItems()throwsAuctionException;
//查询全部流拍的物品
IntegervalidLogin(Stringusername,Stringpass)throwsAuctionException;
//根据用户名,密码验证登陆是否成功
ListgetBidByUser(intuserId)throwsAuctionException;
//查询用户的全部出价
ListgetItemsByOwner(intuserId)throwsAuctionException;
//根据用户id查找目前仍在拍卖中的物品
ListgetAllKind()throwsAuctionException;
//查询全部种类
voidaddItem(Stringname,Stringdesc,Stringremark,doubleinitPrice,intavail,intkind,intuserId)throwsAuctionException;
//添加物品
voidaddKind(Stringname,Stringdesc)throwsAuctionException;
//添加种类
ListgetItemsByKind(intkindId)throwsAuctionException;
//根据产品分类,获取当前拍卖的全部商品
SringgetKind(intkindId)throwsAuctionException;
//根据分类id,获取种类名
ItemBeangetItem(intitemId)throwsAuctionException;
//根据物品id,获取物品
voidaddBid(intuserId,intitemId,doublebidPrice)throwsAuctionException;
//增加新的竞价
voidupdateWiner()throwsAuctionException;
//根据时间来修改物品的赢取者
voidaddAuctionUser(Stringusername,Stringuserpass,Stringemail)throwsAuctionException;
//增加新的用户
3.实现数据访问层
涉及到显示商品种类的数据访问层方法AuctionManager的getAllKind()方法,并在该方法中调用为KindDao的findAll()方法,实现代码如下:
publicListgetAllKind()throwsAuctionException
try
returnkindDao.findAll();
//通过调用此方法
catch(Exceptione)
log.debug(e.getMessage());
thrownewAuctionException("
底层业务异常,请重新试"
publicListfindAll()
returngetHibernateTemplate().find("
fromKind"
其中使用的HQL语句为“fromKind”,即从kind数据表中取出所有记录。
4.2实现浏览拍卖物品页面功能
通过查看商品种类界面,点击某一种类时,就直接将请求转发给动作viewItem.do处理。
最后转向实际的主页面(页面名称为“viewItem.jsp”)即可。
/viewItem"
input"
/WEB-INF/jsp/viewKind.do"
/WEB-INF/jsp/viewItem.jsp"
如图5-2所示。
图5-2浏览某类所有物品界面
查看某中类所有商品界面主要代码如下:
tablewidth="
780"
align="
center"
cellspacing=0background="
images/bodybg.jpg"
tr>
td>
br>
tablewidth=80%border=0align="
cellpadding=0cellspacing="
1"
bgcolor="
#CCCCCC"
trbgcolor="
#e1e1e1"
>
tdcolspan="
5"
divclass="
mytitle"
当前种类是:
/div>
30"
b>
物品名<
/b>
起拍时间<
最高价格<
所有者<
物品备注<
item"
items"
ahref='
viewDetail.do?
itemId=<
name"
addTime"
maxPrice"
owner"
pic"
/table>
浏览某一种类拍卖物品页面的显示涉及到得业务逻辑为org.yeeku.struts包下的ViewItemAction类,他用于从数据库中调出数据供页面显示。
importorg.yeeku.model.*;
*处理商品显示动作
publicclassViewItemActionextendsBaseAction
publicViewItemAction()
{}
publicActionForwardexecute(ActionMappingmapping,ActionFormform,javax.servlet.http.HttpServletRequestre