网上图书订购系统Word文档格式.docx
《网上图书订购系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《网上图书订购系统Word文档格式.docx(47页珍藏版)》请在冰点文库上搜索。
![网上图书订购系统Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/9d0c2fef-343d-4f84-9325-54bd1d34eaea/9d0c2fef-343d-4f84-9325-54bd1d34eaea1.gif)
JSP表单动作(form)提交给CtrlServlet控制
Servlet转发调用JSP页面
(3)数据传输
Servlet调用EJB对象获得数据
Servlet通过session参数传递给JSP页面
4、对象模型设计
(1)界面对象:
查询页search.jsp,图书目录页directory.jsp,购物车页cart.jsp,定单页order.jsp
(2)控制器:
CtrlServlet负责响应输入命令
包括:
模糊查询key、查看购物车cart、结算order、继续选书continue、再次查询search
(3)业务模型
图书信息:
Mybooklib实体类的会话Bean
购物车信息:
CartFacade会话Bean
5、动态转移关系图
CartFacade
Mybooklib
三、具体实现与算法设计
1、数据设计:
(1)图书信息(数据库表、查询结果)
书号ISBNchar[100]主键
书名Titlechar[100]
作者Authorchar[100]
出版社Presschar[100]
价格Pricedouble
(2)购物车信息
书号ISBNchar[100]
数量NumberString
(3)共享数据
a.查询结果和选中的图书信息
b.作为session参数
在NetBeans7.3版本中建立内置的数据库BookStore,建立表MYBOOKLIB,输入的测试数据如下:
2、EJB接口设计
(1)MybooklibFacade管理图书信息(封装数据库)
search(Stringkey):
根据关键字从数据库中查找出图书信息记录(数组);
条件:
书名、作者、出版社名中包含关键字;
根据书号,找出图书信息记录
具体算法如下:
publicArrayList<
Bookstore>
search(Stringkey){
List<
all=this.findAll();
if(all.isEmpty()){
returnnull;
}
ArrayList<
result=newArrayList<
();
for(Bookstorecurrent:
all){
if(current.getTitle().toLowerCase().contains(key)||current.getAuthor().toLowerCase().contains(key)||current.getPress().toLowerCase().contains(key)){
result.add(current);
returnresult;
}
(2)CartFacade管理购物车信息(本次会话有效)
add(Stringisbn,Stringtitle,doubleprice)添加记录
代码如下:
privateArrayList<
Cart>
record;
publicvoidadd(Stringisbn,Stringtitle,doubleprice){
record.add(newCart(isbn,title,price,1));
get()//获得记录数组
实现代码如下:
get(){
result=newArrayList<
();
for(Cartcurrent:
record){
result.add(newCart(current.getIsbn(),current.getTitle(),current.getPrice(),current.getNumber()));
publicvoidset(Stringisbn,Stringnumber){//设置购买数量
if(current.getIsbn().equals(isbn)){
current.setNumber(number);
3、控制器(CtrlServlet)的输入信息
(1)来自查询页search.jsp
page=“search”&
key=关键字
(2)来自图书目录页Directory.jsp
page=“Directory”
(3)来自购物车页Cart.jsp
page=“Cart”
(4)控制器(CtrlServlet)的实现代码
packagesession;
importbook.CartFacadeLocal;
importbook.MybooklibFacadeLocal;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.Enumeration;
importjava.util.logging.Level;
importjava.util.logging.Logger;
importjavax.ejb.EJB;
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.naming.NamingException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*
*@authorAdministrator
*/
publicclassCtrlServletextendsHttpServlet{
CartFacadeLocalcartFacade;
//=lookupCartFacadeLocal();
@EJB
privateMybooklibFacadeLocalmybooklibFacade;
/**
*ProcessesrequestsforbothHTTP
*<
code>
GET<
/code>
and
POST<
methods.
*@paramrequestservletrequest
*@paramresponseservletresponse
*@throwsServletExceptionifaservlet-specificerroroccurs
*@throwsIOExceptionifanI/Oerroroccurs
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("
text/html;
charset=UTF-8"
);
PrintWriterout=response.getWriter();
request.setCharacterEncoding("
UTF-8"
try{
if(request.getSession().getAttribute(request.getLocalAddr())==null){
cartFacade=this.lookupCartFacadeLocal();
request.getSession().setAttribute(request.getLocalAddr(),this.cartFacade);
}else{
this.cartFacade=(CartFacadeLocal)request.getSession().getAttribute(request.getLocalAddr());
if(request.getParameter("
page"
).equals("
index"
)){//从index.jsp定向到Directory.jsp
Stringkeyword=request.getParameter("
key"
//request.getSession().setAttribute("
query"
keyword);
request.getSession().setAttribute("
directory"
mybooklibFacade.search(keyword.toLowerCase()));
response.sendRedirect("
Directory.jsp"
Directory"
)){//从Directory.jsp定向到Cart.jsp
if(!
this.cartFacade.initialed()){
this.cartFacade.create();
Enumerationnames=request.getParameterNames();
while(names.hasMoreElements()){
Stringname=(String)names.nextElement();
name.equals("
)&
&
!
submit"
)){
this.cartFacade.exist(request.getParameter(name))){
this.cartFacade.add(request.getParameter(name),mybooklibFacade.find(request.getParameter(name)).getTitle(),mybooklibFacade.find(request.getParameter(name)).getPrice());
cart"
this.cartFacade.get());
Cart.jsp"
request.getParameter("
重新查询"
)){//从Directory.jsp定向到index.jsp
index.jsp"
Cart"
)){//从Cart.jsp定向到Order.jsp
doublesum=0;
address"
this.cartFacade.set(name,request.getParameter(name));
sum+=mybooklibFacade.find(name).getPrice()*Integer.parseInt(request.getParameter(name));
fee"
sum);
request.getParameter("
));
Order.jsp"
}finally{
out.close();
//<
editor-folddefaultstate="
collapsed"
desc="
HttpServletmethods.Clickonthe+signonthelefttoeditthecode."
>
*HandlestheHTTP
method.
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
processRequest(request,response);
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
*Returnsashortdescriptionoftheservlet.
*@returnaStringcontainingservletdescription
publicStringgetServletInfo(){
return"
Shortdescription"
;
}//<
/editor-fold>
privateCartFacadeLocallookupCartFacadeLocal(){
Contextc=newInitialContext();
return(CartFacadeLocal)c.lookup("
java:
global/bookstore/bookstore-ejb/CartFacade!
book.CartFacadeLocal"
}catch(NamingExceptionne){
Logger.getLogger(getClass().getName()).log(Level.SEVERE,"
exceptioncaught"
ne);
thrownewRuntimeException(ne);
四、网上书店系统全部实现代码
在NetBeans7.3中先建立数据库Mybooklib,并且输入测试数据。
单击“文件/新建项目/JavaEE/企业应用程序”,输入项目名称bookstore,确定后会建立J2EE项目bookstore。
在bookstore-war节点单击右键,新建JSP文件。
1、图书查询页search.jsp代码:
<
%--
Document:
Search
Createdon:
2013-5-18,10:
33:
29
Author:
Administrator
--%>
%@pagecontentType="
text/html"
pageEncoding="
%>
!
DOCTYPEhtml>
html>
<
head>
metahttp-equiv="
Content-Type"
content="
charset=UTF-8"
title>
网上书店<
/title>
/head>
bodystyle="
background:
url('
image/7.jpg'
)no-repeat"
br>
center>
h1>
b>
fontcolor=Fuchsia>
欢迎来到网上书店^^<
/font>
/b>
/h1>
h2>
fontcolor=Lime>
请输入您要查询图书的关键字(书名、作者或出版社)<
/h2>
/center>
p>
FORMmethod="
post"
action="
CtrlServlet"
inputtype="
text"
name="
P>
hidden"
value="
/>
name="
Query"
value="
模糊查询"
/FORM>
/body>
/html>
2、图书目录页directory.jsp代码:
Directory
2013-5-27,12:
46:
35
%@pageimport="
book.Mybooklib"
java.util.ArrayList"
图书查询结果<
image/5.jpg'
fontcolor="
Purple"
查询结果<
%ArrayList<
Mybooklib>
result=(ArrayList<
)session.getAttribute("
if(result==null||result.isEmpty()){%>
Maroon"
抱歉,目前没有您需要的图书<
formname="
/form>
%}else{%>
formaction="
Aqua"
符合查询关键字的图书如下<
tableborder="
1"
>
tr>
th>
/th>
书名<
作者<
出版社<
价格<
/tr>
%for(Mybooklibcurrent:
result){%>
td>
checkbox"
%=current.getIsbn()%>
"
%=current.getIsbn