版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章网上书店项目的架构和设计
4.1网上书店的架构4.24.3搭建项目框架注册、登录和注销功能开发4.1网上书店的架构4.1.1功能需求和展示1.主界面网上书店购书界面如图4.1所示。4.1.1功能需求和展示2.功能模块网上书店是一个典型的基于Web网站的JavaEE软件系统,集成了诸多的功能模块,主要包括:(1)显示图书分类。(2)用户可以根据分类浏览某一类图书列表。(3)用户可以查看具体某一本书的简介。(4)在图书浏览页只要单击【购买】按钮,就可把选定的图书加入购物车中。(5)用户可以随时单击
,查看车中已购图书的信息。(6)已登录的用户可以单击【结账】按钮下订单。(7)使用需先注册,在注册页填写个人信息,确认有效后成为新用户。(8)用户在登录页填写用户名和密码,确认正确后才可结账。4.1.1功能需求和展示各功能模块的划分如图4.2所示。4.1.2业务层的引入:多框架整合(含Service层)1.添加Spring核心容器2.添加Hibernate并持久化user表3.添加Struts2框架4.Struts2与Spring集成①添加Spring支持包。②配置web.xml文件。打开web.xml文件,增加Spring的配置,代码所示。③创建perties。在src目录下创建perties文件,把Struts2的类的生成交给Spring完成:struts.objectFactory=spring;4.1.2业务层的引入:多框架整合(含Service层)5.开发DAO层BaseDAO代码如下:packageorg.easybooks.bookstore.dao;importorg.hibernate.SessionFactory;importorg.hibernate.Session;publicclassBaseDAO{ privateSessionFactorysessionFactory; publicSessionFactorygetSessionFactory(){ returnsessionFactory; } publicvoidsetSessionFactory(SessionFactorysessionFactory){ this.sessionFactory=sessionFactory; } publicSessiongetSession(){ Sessionsession=sessionFactory.openSession(); returnsession; }}4.1.2业务层的引入:多框架整合(含Service层)4.1.2业务层的引入:多框架整合(含Service层)4.1.2业务层的引入:多框架整合(含Service层)7.开发Action控制块LoginAction.java代码所示。struts.xml文件内容如下:<!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "/dtds/struts-2.0.dtd"><struts> <packagename="struts"extends="struts-default"> <actionname="login"class="login"> <resultname="error">/error.jsp</result> <resultname="success">/welcome.jsp</result> </action> <actionname="register"class="login"method="register"> <resultname="error">/error.jsp</result> <resultname="success">/welcome.jsp</result> </action> </package></struts>4.1.2业务层的引入:多框架整合(含Service层)4.1.2业务层的引入:多框架整合(含Service层)4.1.2业务层的引入:多框架整合(含Service层)welcome.jsp的代码如下:<%@pagelanguage="java"pageEncoding="gb2312"%><%@ taglibprefix="s"uri="/struts-tags"%><html> <head><title>成功页面</title></head> <body> <s:propertyvalue="user.username"/>,您好!欢迎光临叮当书店。 </body></html>error.jsp的代码如下:<%@pagelanguage="java"pageEncoding="gb2312"%><html> <head><title>失败页面</title></head> <body>
登录失败! </body></html>4.1.2业务层的引入:多框架整合(含Service层)10.部署运行部署项目、启动Tomcat服务器。在浏览器中输入http://localhost:8080/jsp_struts2_spring_service_dao_hibernate/并回车,出现如图4.3所示的登录首页。4.1.2业务层的引入:多框架整合(含Service层)单击【登录】按钮提交表单,跳转到如图4.4所示的成功页面。4.1.2业务层的引入:多框架整合(含Service层)后退到登录首页,如图4.5所示,用鼠标单击页面上的“注册”链接,进入如图4.6所示的注册页面。4.1.2业务层的引入:多框架整合(含Service层)此时控制器会调用IUserService接口里的“注册+登录”服务(registerUser()方法),该服务又先后调用DAO层的saveUser()方法和validateUser()方法,实现新用户注册后立即用新账号登录的功能,本例将跳转到如图4.7所示的页面。4.1.3系统架构:原理与实施1.分层模型总结前述的知识,轻量级的JavaEE系统最适合采用分层的方式架构,下面给出其分层模型,如图4.8所示。4.1.3系统架构:原理与实施2.实施方案这里将讨论一个使用3种开源框架的解决方案,如图4.9所示。4.2搭建项目框架1.创建Web项目在MyEclipse中创建一个新的WebProject,命名为bookstore。2.创建源代码包在项目src目录下创建如图4.10所示的包。4.2搭建项目框架3.创建数据库网上书店有以下5个实体:用户、图书分类、图书、订单、订单项,因此,本系统的数据库设计如图4.11所示。4.2搭建项目框架根据图4.11所示的设计模型,用CASE工具生成SQL语句,代码所示。最终生成的表如图4.12所示,每个实体对应一个表,总共5个表。4.2搭建项目框架向catalog表输入记录的SQL语句:INSERTINTOcatalogVALUES(1,'C语言程序设计');INSERTINTOcatalogVALUES(2,'Java开发');INSERTINTOcatalogVALUES(3,'数据库');INSERTINTOcatalogVALUES(4,'网页编程');4.2搭建项目框架向book表输入记录:INSERTINTObookVALUES(1,4,'ASP.NET3.5实用教程',38,'ASP.NET3.5.jpg');INSERTINTObookVALUES(2,1,'C#实用教程',43,'CSharp.jpg');INSERTINTObookVALUES(3,1,'C实用教程',36,'C.jpg');INSERTINTObookVALUES(4,1,'C++实用教程',40,'C++.jpg');INSERTINTObookVALUES(5,4,'Flex4开发实践',45,'Flex4.jpg');INSERTINTObookVALUES(6,2,'JavaEE基础实用教程',35,'JavaEEBasic.jpg');INSERTINTObookVALUES(7,2,'JavaEE实用教程',39,'JavaEE.jpg');INSERTINTObookVALUES(8,2,'Java实用教程(第2版)',50,'Java.jpg');INSERTINTObookVALUES(9,4,'JSP编程教程',30,'JSP.jpg');INSERTINTObookVALUES(10,3,'MySQL实用教程',37,'MySQL.jpg');INSERTINTObookVALUES(11,3,'Oracle实用教程(第3版)',29,'Oracle.jpg');INSERTINTObookVALUES(12,4,'PHP实用教程',35,'PHP.jpg');INSERTINTObookVALUES(13,3,'SQLServer实用教程(第3版)',25,'SQLServer.jpg');INSERTINTObookVALUES(14,1,'VisualC++教程(第2版)',25,'VC++.jpg');4.2搭建项目框架4.添加SSH2多框架要注意添加的次序:(1)添加Spring核心容器。(2)添加Hibernate框架。(3)添加Struts2框架。(4)Struts2与Spring集成。具体操作同4.1.2小节,在第(2)步添加了Hibernate后,要一并将bookstore中的5个表全都用“反向工程”法生成持久化对象及映射文件,生成项全部置于先前创建的org.easybooks.bookstore.vo包中,如图4.13所示。4.3注册、登录和注销功能开发4.3.1表示层页面设计1.页面布局在WebRoot下建立文件夹css,在其中创建bookstore.css文件。编写CSS代码所示。4.3.1表示层页面设计2.知识点:CSS样式表例如,在CSS定义了a标签的样式如下:a{ font-family:"宋体"; color:#000000;}那么在页面中若出现:<ahref="a.jsp">链接</a>而类样式则不同,定义一个样式的类格式如下:.name{ …该类样式的属性}在页面标签中加入“class="name"”属性,该标签就可以使用CSS中.name定义的样式。例如:<divclass="name"> …</div>4.3.1表示层页面设计3.设计主界面主页面的框架由index.jsp实现,代码所示。4.分块子页面设计(1)网页头设计。首先在主界面的上方是网页头(对应head.jsp),代码所示。(2)登录页设计。登录页对应login.jsp,代码所示。(3)注册页设计。注册页对应register.jsp,代码所示。(4)网页尾设计。foot.jsp为整个页面的尾部,其代码非常简单,一般是版权说明等内容,代码所示。4.3.1表示层页面设计5.效果展示(1)主界面。在浏览器地址栏输入http://localhost:8080/bookstore/index.jsp并回车,显示主界面如图4.14所示。4.3.1表示层页面设计(2)登录页。单击“登录”链接,如图4.15所示,进入登录页。4.3.1表示层页面设计(3)注册页。单击“注册”链接,进入注册页,页面上出现如图4.16所示的供用户填写个人信息的表单。4.3.2持久层接口设计DAO层所涉及的类、接口如图4.17所示。4.3.2持久层接口设计4.3.2持久层接口设计创建BaseDAO.java,代码如下:packageorg.easybooks.bookstore.dao;importorg.hibernate.SessionFactory;importorg.hibernate.Session;publicclassBaseDAO{ privateSessionFactorysessionFactory; publicSessionFactorygetSessionFactory(){ returnsessionFactory; } publicvoidsetSessionFactory(SessionFactorysessionFactory){ this.sessionFactory=sessionFactory; } publicSessiongetSession(){ Sessionsession=sessionFactory.openSession(); returnsession; }}在org.easybooks.bookstore.dao.impl包中创建UserDAO.java,代码所示。4.3.3业务及控制逻辑设计1.业务层开发业务层(Service层)用于处理各种业务逻辑,主要的类和接口是IUserService、UserService,如图4.18所示。4.3.3业务及控制逻辑设计4.3.3业务及控制逻辑设计4.3.3业务及控制逻辑设计2.控制模块开发系统的注册、登录和注销功能的控制模块由UserAction类承担,该类含有3个方法,如图4.19所示,register()方法用于用户注册,execute()方法用于用户登录,logout()方法用于用户注销。这些方法的实现依赖于Service层,在属性中,有一个userService属性,它的类型是IUserService。UserAction类位于org.easybooks.bookstore.action包中,代码所示。4.3.3业务及控制逻辑设计struts.xml文件中配置UserAction,代码如下:<!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "/dtds/struts-2.0.dtd"><struts> <packagename="struts"extends="struts-default"> <actionname="register"class="userAction"method="register"> <resultname="success">/register_success.jsp</result> </action> <actionname="login"class="userAction"> <resultname="success">/login_success.jsp</result>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教统编版语文八年级上册第14课《唐诗五首》同步练习(含答案)1
- 2026青少年侦探社活动形式创意故事性发展少儿维权社会调查报告防范儿童安全风险隐患的建议
- 2026青海省生态旅游产业发展行业市场吸引力评估生态产品价值投资规划
- 2026中国数字广告营销行业市场深度调研及竞争格局与投资前景研究报告
- 2026中国新能源产业基金运作模式与收益分析报告
- 2026中国铁路行业市场分析及趋势前景与投资战略研究报告
- 2026中国医疗废物处理行业市场竞争格局政策影响分析报告
- 2026强制保险产业理赔流程产品定价市场风险投资方向分析规划
- 2026中国物流行业消费者权益保护及纠纷解决机制研究
- 2026青岛海滨旅游城市经济市场供需分析研究投资评估规划报告
- 2026年保安员考试题库及答案
- 重庆万州区2026年社区工作者招聘考试试卷-含答案解析
- 湖北省宜昌市秭归县县域高中联合体2025-2026学年高一下学期期末测评语文试题(含答案)
- 餐饮业餐厅经理经营效益及团队管理KPI考核表
- 2026年作风建设年研讨发言材料-强化责任担当、认真履职尽责,抓好作风建设
- 丹东施工方案
- 沪教版初中英语八年级上册Unit 2 Amazing Numbers语法教案
- 2026年江苏省省属事业单位统一公开招聘《综合知识和能力素质》真题
- 2026浙江省空港融资租赁有限公司招聘1人笔试备考题库及答案详解
- 宿舍管理员安全工作全流程培训
- 《3~6岁儿童学习与发展指南》考试题库及答案2026年
评论
0/150
提交评论