长春师范学院本科毕业论文(设计)
第二章 相关开发技术
2.1 J2EE设计平台
J2EE Java2平台企业版(Java 2 Platform,Enterprise Edition)是一套全然不同于传统应用开发的技术架构,它包含许多组件,主要可以简化并且规范应用系统的开发及部署,进而提高可移植性、安全与再用价值[5]。
目前,Java 2平台它有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。J2EE它是一种利用Java 2平台来简化企业的解决方案的开发、部署和管理等相关的复杂问题的体系结构。J2EE技术的基础是核心的Java平台或Java 2平台的标准版,J2EE它不仅巩固标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术及能够在Internet应用中保护数据的安全模式等等,同时提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构[6]。
2.2 MySql
2.2.1 MySql简介
MySQL它是一个小型关系型数据库管理系统,MySQL它还是一种关联数据库管理的系统,关联数据库将数据保存于不同的表中,而不是将所有数据内容放在一个大仓库内。这样就提高了速度和灵活性。MySQL的是SQL“结构化查询语言”。SQL它是用于访问数据库中的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于它体积小、速度快、总体拥有成本低,特别是开放源码这一特点,许多中小型网站为了降低网站总体成本就选择了MySQL作为网站数据库[7,8]。 2.2.2 MySql优势
(1)它是使用C和C++编写,并使用了众多的编译器进行测试,保证了源代码的可移植性;
(2)支持AIX、HP-UX、NovellNetware、Linux、Mac OS、OpenBSD、Solaris、Windows、FreeBSD OS/2 Wrap等多种操作系统;
(3)为多种编程语言都提供了API。这些编程语言包括C、C++、Java、Perl、PHP、Ruby、和Tcl Eiffel等;
3
长春师范学院本科毕业论文(设计)
(4)既能作一个单独的应用程序应用在客户端服务器网络环境中,还能作为一个库而嵌入到其他的软件中提供多种语言支持,常见的编码如中文的GBK、BIG5,日文种的Shift、JIS以用作数据表名和数据列名;
(5)提供了TCP/IP、ODBC和JDBC等许多种数据库连接方法; (6)它还提供了用于管理、检查、优化数据库的操作的管理工具; (7)可以处理有上千万条记录的大型数据库[9]。
2.3 struts2
2.3.1 struts2简介
Struts 2它是Struts的下一代产品,是融合了struts 1和WebWork的技术,在它们基础上合并的全新的框架。其全新的Struts 2的体系结构与Struts 1的体系结构有着巨大差别。Struts 2它是以WebWork为核心,采用了拦截器机制来处理用户的请求,这样的设计让业务逻辑控制器能够与Servlet API完全脱离,因此Struts 2可以理解成WebWork的更新产品。虽然从Struts 1到Struts 2有着根本性的变化,但是相对于WebWork,Struts 2它的变化还是很小[10]。 2.3.2 struts2框架结构
当Web容器收到 请求(HttpServletRequest)后,它将请求传递给一个标准的过滤链包括(ActionContextCleanUp)过滤器,然后经过Other filters(SiteMesh ,etc),再然后需要调用FilterDispatcher这个核心控制器,然后它再调用ActionMapper确定请求来自哪个Action,ActionMapper返回一个收集Action详细信息的ActionMaping的对象。接下来FilterDispatcher它将控制权派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager) 从配置文件中读取配置信息文件(struts.xml),然后创建ActionInvocation对象,ActionInvocation在调用Action之前它会依次的调用所用配置的拦截器(Interceptor N) 一旦执行结果后返回结果字符串ActionInvocation负责查找结果字符串对应的结果集(Result)然后执行这个Result。 Result会调用一些模版(JSP)来表页面,随后拦截器(Interceptor N)会被执行(顺序和Action执行之前相反)最后响应(HttpServletResponse)它会被返回在web.xml中配置的那些过滤器和核心控制器(FilterDispatcher)中[11,12]。
2.4 spring
2.4.1 spring简介
它是为了解决企业应用程序开发的复杂性而由Rod Johnson创建的。框架的主要好处之一就是它的分层架构,分层架构可以允许使用者选择使用哪一个组件,同时并
4
长春师范学院本科毕业论文(设计)
为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成从前只可能是由EJB来完成的事情。但Spring的用途不仅局限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java的应用都可以从Spring中受益颇多[13]。 2.4.2 sring核心机制
控制反转模式(依赖性注入)的基本概念是:不为创建对象,但是描述创建它的方式。在代码中不直接和对象和服务连接,而是在配置文件中来描述哪一个组件它需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 它是负责将其联系在一起。在典型的 IOC 场景中,是容器创建了所有对象,并且设置必要的属性来将它们连接在一起,决定什么时间去调用方法[14]。
2.5 hibernate
2.5.1 hibernate简介
Hibernate它是一个开放源代码的对象关系映射框架,它是对JDBC进行了非常轻量级的对象封装,使Java程序员能够随心所欲的使用对象编程思维来操纵数据库。 Hibernate它可以应用在任何使用JDBC的场合,既能够在Java的客户端程序使用,也能够在Servlet/JSP的Web应用中使用,最有意义的是,Hibernate它能够在应用EJB的J2EE架构中取代CMP,来完成数据持久化的重任[15]。 2.5.2 hibernate核心接口
Session接口它是负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了许多常见的SQL语句)。但是,需要注意的是Session对象是非线程安全的。并且Hibernate中的session不同于JSP应用中的HttpSession[16]。这里当使用session这个术语时,其实指的是Hibernate中的session,在以后会将HttpSession对象称为用户session。
SessionFactory接口它是负责初始化Hibernate的。它既可以充当数据存储源的代理,还负责创建Session对象。在这里还用到工厂模式。但需要注意的是SessionFactory它并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,但是当需要操作多个数据库时,可以为每个数据库都指定一个SessionFactory。
Configuration类它是负责配置并启动Hibernate的,创建SessionFactory对象的。在Hibernate的启动过程中,Configuration类的实例它先定位映射文档位置、读取配置,然后创建SessionFactory这个对象[17]。
Transaction接口它是负责事务的相关操作。它是可选的,同时开发人员也可以设计编写自己的底层事务处理代码[18]。
5
长春师范学院本科毕业论文(设计)
第三章 需求分析
3.1 网上订餐需求分析
3.1.1 功能需求分析
本系统主要是实现网上浏览菜单、订餐、产生订单等功能的系统。需要实现菜品信息的提示、购物车管理、客户信息注册、登录管理、订单处理和信息反馈等内容。需要完成的主要任务如下:当客户进入网上订餐时,应该在订餐页面中显示相应的菜品信息,来供客户去选择所需要的菜品,同时还提供按菜品名称,快速查询所需要菜品信息的功能。当客户选择预定某个菜品时,应该能够将对应菜品信息,如:价格、数量记录到对应的购物车中,此时客户可以选择选择其他菜品或是查看自己的购物车,最后,在购物车中填下相应的送餐信息,提交订餐的订单后,自动清除以生成订单的购物车中的信息。餐厅服务人员根据订单信息,查看详细订单明细并根据实际情况处理订餐。
分析网上订餐系统,制订整个系统框架如图3-1:
图3-1系统整体框架图
目前,用于需求建模的方法有很多,最常见的是包括数据流图(DFD)、实体关系图(ERD)和UML三种方式。UML(统一建模语言)是一种建模语言,它的特点是良好的定义、表达能力突出、具有多重功能。软件工程中的一些方法和技术也都应用在其中。从软件需求分析开始就有了很多的应用,并且贯穿始终。本系统使用UML中的用例图、活动图、状态图来对需求建模。代码的编写是以最终的类图和对类图的补充说明文档为基础的。
通常都是先画用例图和分析用例。然后把用例图中的actor去除,其余的名词中的大多就是类了,再根据具体情况斟酌就可以画类图。类图并非一下子画完的,可以在一开始先画出一些必要的成员变量和成员函数,再分析业务逻辑,并且可以开始画
6

