资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,4,章 网上书店项目的架构和设计,4.1,网上书店的架构,4.2,4.3,搭建项目框架,注册、登录和注销功能开发,4.1,网上书店的架构,4.1.1,功能需求和展示,1,主界面,网上书店购书界面如图,4.1,所示。,4.1.1,功能需求和展示,2,功能模块,网上书店是一个典型的基于,Web,网站的,Java EE,软件系统,集成了诸多的功能模块,主要包括:,(,1,)显示图书分类。,(,2,)用户可以根据分类浏览某一类图书列表。,(,3,)用户可以查看具体某一本书的简介。,(,4,)在图书浏览页只要单击,【,购买,】,按钮,就可把选定的图书加入购物车中。,(,5,)用户可以随时单击,,查看车中已购图书的信息。,(,6,)已登录的用户可以单击,【,结账,】,按钮下订单。,(,7,)使用需先注册,在注册页填写个人信息,确认有效后成为新用户。,(,8,)用户在登录页填写用户名和密码,确认正确后才可结账。,4.1.1,功能需求和展示,各功能模块的划分如图4.2所示。,4.1.2,业务层的引入:多框架整合(含,Service,层),1,添加,Spring,核心容器,2,添加,Hibernate,并持久化,user,表,3,添加,Struts 2,框架,4,Struts 2,与,Spring,集成,添加,Spring,支持包。,配置,web.xml,文件。,打开,web.xml,文件,增加,Spring,的,配置,代码所示。,创建,struts.properties,。,在,src,目录下创建,struts.properties,文件,把,Struts 2,的类的生成交给,Spring,完成:,struts.objectFactory=spring;,4.1.2,业务层的引入:多框架整合(含,Service,层),5,开发,DAO,层,BaseDAO,代码如下:,package org.easybooks.bookstore.dao;,import org.hibernate.SessionFactory;,import org.hibernate.Session;,public class BaseDAO,private SessionFactory sessionFactory;,public SessionFactory getSessionFactory(),return sessionFactory;,public void setSessionFactory(SessionFactory sessionFactory),this.sessionFactory=sessionFactory;,public Session getSession(),Session session=sessionFactory.openSession();,return session;,4.1.2,业务层的引入:多框架整合(含,Service,层),IUserDAO,接口代码如下:,package org.easybooks.bookstore.dao;,import org.easybooks.bookstore.vo.User;,public interface IUserDAO,public User validateUser(String username,String password);,public void saveUser(User user);,UserDAO,类代码所示。,4.1.2,业务层的引入:多框架整合(含,Service,层),6,开发业务层,在,src,目录下建立包,org.easybooks.bookstore.service,,包中安置一个,IUserService,接口。,IUserService,接口代码如下:,package org.easybooks.bookstore.service;,import org.easybooks.bookstore.vo.User;,public interface IUserService,public User validateUser(String username,String password);,public User registerUser(User user);,/,实现(注册登录)的,Service,UserService,类代码所示。,4.1.2,业务层的引入:多框架整合(含,Service,层),7,开发,Action,控制块,LoginAction.java,代码所示。,struts.xml,文件内容如下:,/error.jsp,/welcome.jsp,/error.jsp,/welcome.jsp,4.1.2,业务层的引入:多框架整合(含,Service,层),8,注册组件,applicationContext.xml,文件代码所示。,9,编写,JSP,文件,login.jsp,的代码如下:,登录页面,用户登录,姓名,:,密码,:,注册,4.1.2,业务层的引入:多框架整合(含,Service,层),register.jsp,的代码如下:,注册页面,用户注册,用户名,:,密,码,:,4.1.2,业务层的引入:多框架整合(含,Service,层),welcome.jsp,的代码如下:,成功页面,,您好!欢迎光临叮当书店。,error.jsp,的代码如下:,失败页面,登录失败!,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,分层模型,总结前述的知识,轻量级的,Java EE,系统最适合采用分层的方式架构,下面给出其分层模型,如图,4.8,所示。,4.1.3,系统架构:原理与实施,2,实施方案,这里将讨论一个使用,3,种开源框架的解决方案,如图,4.9,所示。,4.2,搭建项目框架,1,创建,Web,项目,在,MyEclipse,中创建一个新的,Web Project,,命名为,bookstore,。,2,创建源代码包,在项目,src,目录下创建如图,4.10,所示的包。,4.2,搭建项目框架,3,创建数据库,网上书店有以下,5,个实体:用户、图书分类、图书、订单、订单项,因此,本系统的数据库设计如图,4.11,所示。,4.2,搭建项目框架,根据图,4.11,所示的设计模型,用,CASE,工具生成,SQL,语句,代码所示。,最终生成的表如图,4.12,所示,每个实体对应一个表,总共,5,个表。,4.2,搭建项目框架,向,catalog,表输入记录的,SQL,语句:,INSERT INTO catalog VALUES(1,C,语言程序设计,);,INSERT INTO catalog VALUES(2,Java,开发,);,INSERT INTO catalog VALUES(3,数据库,);,INSERT INTO catalog VALUES(4,网页编程,);,4.2,搭建项目框架,向,book,表输入记录:,INSERT INTO book VALUES(1,4,ASP.NET 3.5,实用教程,38,ASP.NET3.5.jpg);,INSERT INTO book VALUES(2,1,C#,实用教程,43,CSharp.jpg);,INSERT INTO book VALUES(3,1,C,实用教程,36,C.jpg);,INSERT INTO book VALUES(4,1,C+,实用教程,40,C+.jpg);,INSERT INTO book VALUES(5,4,Flex 4,开发实践,45,Flex4.jpg);,INSERT INTO book VALUES(6,2,Java EE,基础实用教程,35,JavaEEBasic.jpg);,INSERT INTO book VALUES(7,2,Java EE,实用教程,39,JavaEE.jpg);,INSERT INTO book VALUES(8,2,Java,实用教程(第,2,版),50,Java.jpg);,INSERT INTO book VALUES(9,4,JSP,编程教程,30,JSP.jpg);,INSERT INTO book VALUES(10,3,MySQL,实用教程,37,MySQL.jpg);,INSERT INTO book VALUES(11,3,Oracle,实用教程(第,3,版),29,Oracle.jpg);,INSERT INTO book VALUES(12,4,PHP,实用教程,35,PHP.jpg);,INSERT INTO book VALUES(13,3,SQL Server,实用教程(第,3,版),25,SQL Server.jpg);,INSERT INTO book VALUES(14,1,Visual C+,教程(第,2,版),25,VC+.jpg);,4.2,搭建项目框架,4,添加,SSH2,多框架,要注意添加的次序:,(,1,)添加,Spring,核心容器。,(,2,)添加,Hibernate,框架。,(,3,)添加,Struts 2,框架。,(,4,),Struts 2,与,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;,那么在页面中若出现:,链接,而类样式则不同,定义一个样式的类格式如下:,.name,该类样式的属性,在页面标签中加入“,class=name,”属性,该标签就可以使用,CSS,中,.name,定义的样式。例如:,4.3.1,表示层页面设计,3,设计主界面,主页面的框架由,index.jsp,实现,代码所示。,4,分块子页面设计,(,1,)网页头设计。,首先在主界面的上方是网页头(对应,head.jsp,),,代码所示。,(,2,)登录页设计。,登录页
展开阅读全文