目录
2 开发技术及开发环境
2.1 Java语言简介
2.2 J2EE技术介绍
2.3 Servlet/JSP技术
2.4 MVC 简介
2.5 Struts 技术
2.6 Hibernate 技术
2.6.1 应用程序的分层体系结构
2.6.2 Hibernate的应用及API简介
2.7 开发环境及环境配置
2.7.1 Java/JSP系统环境
2.7.2 JSP环境的安装和环境变量的设置
2.7.3 Eclipse开发工具
2.7.4 Tomcat服务器
2.8 数据库开发工具选择及配置
前面内容请移步
基于JSP/Servlet校园二手交易平台(一)
免费资源+源代码+毕业论文
校园二手平台项目
2 开发技术及开发环境
2.1 Java语言简介
Java语言是美国Sun公司于1995年推出的一种简单的、面向对象的、分布式的、可解释的、键壮的、安全的、结构的、中立的、可移植的、性能很优异的多线程的、动态的语言。其前身为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术。经过Sun公司的工程师的不懈努力以及全世界无数的编程爱好者的使用,Java终于发展成为今天这样一个集桌面(J2SE)、网络(J2EE)、移动平台(J2ME)应用为一体的功能强大的编程语言。目前Java由于其平台无关及分布式特性,最重要的应用是在网络应用上[1]。
2.2 J2EE技术介绍
J2EE技术是Java网络应用的技术,广泛应用于企业级的应用。它是由一套规范(shannin,2001)和建立在J2SE平台上的应用编程接口(API)组成。J2EE拥有Sun公司提供免费开发工具,称为J2EE软件开发工具包(Software Development Kit,SDK )(http://java.sun.com/j2ee)。J2EE技术是一种Java网络应用技术的组合,包含有远程方法调用(Remote Method Invocation,RMI)、Java消息服务(Java Message Service,JMS)、JavaMail等通信服务,JDBC、Java命名和目录接口(Java naming and Directory Interface,JNDI)、Java连接器体系结构(Java Connector Architecture,JCA)、Java事务API/Java事务服务(JTA/JTS)、XML处理API等通用服务以及Servlet、Java服务器页面(JSP)、企业级JavaBean(EJB)等组件技术。任何J2EE的实现都必须要在其特定容器中实现。
2.3 Servlet/JSP技术
Servlet是JSP技术的基础,JSP本身就是预先被编译成Servlet,然后再运行的,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。 Servlet其实和传统的CGI程序和ISAPI、NSAPI等Web程序开发工具的作用是相同的,在使用Java Servlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器也可以通过附加的应用服务器和模块来支持Servlet。JSP(JavaServer Pages)是一种基于Java的脚本技术。在JSP 的众多优点之中,其中之一是它能将 HTML 编码从 Web 页面的业务逻辑中有效地分离出来。用 JSP 访问可重用的组件,如 Servlet、JavaBean 和基于 Java 的 Web 应用程序。JSP 还支持在 Web 页面中直接嵌入 Java 代码。可用两种方法访问 JSP 文件:浏览器发送 JSP 文件请求、发送至 Servlet 的请求。
a) JSP 文件访问 Bean 或其它能将生成的动态内容发送到浏览器的组件。
b) 发送至 Servlet 的请求生成动态内容,并调用 JSP 文件将内容发送到浏览器。该访问使得将内容生成从内容显示中分离出来更为方便。
JSP最大的优点在于其与平台无关性,具有“一次编写,处处运行”的特点。
2.4 MVC 简介
模型-视图-控告器(MVC)是20世纪80年代Smalltalk-80出的一种软件模式,现在已经被广泛使用。
1. 模型(Model)
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑。
2. 视图(View)
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
3.控制器(Controller)
控制器的工作就是根据用户的输入,控制用户界面显示和更新模型对象的状态。典型的MVC模式所包含的模块、每个模块的功能以及模块之间的关系如图2-1所示[2]:
图2-1 MVC组件的关系和功能
MVC模式的出现不仅实现的功能模块和显示模块的分离,同是赛马场还提高了应用系统的可维护性、可扩展性、可移植性和组件的可利用性。
在早期的程序中,如果不注意对数功能和显示的解耦合,常常估导致程序的复杂及难以维护,像VB,Delphi等RAD程序都有这种问题。甚至现在有C#,Java有时候也会出现把业务逻辑写在显示模块中的现象。
尽管MVC设计模式很早的提出了,但在Web项目的开发中引入MVC却是步履艰难。主要原因是在早期的Web项目开发中,程序语言和Html的分离一直难以实现,CGI程序以字条串输出的形式动态的生成html内容。直到基于J2EE的JSP Model2问世时才得以改观。它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean实现模型的功能。JSP Model2 结构如图2-2所示:
图2-2 JSP Model2 结构图
在Model 2这种框架结构中,Servlet作为控制器负责处理用户的请求以及创建JSP页面中所有要使用的Bean对象,并且还要根据用户的请求来返回到不同的JSP页面。
在使用Model 2开发框架时,一定要保证在JSP页面中不能包含任何的业务处理逻辑。它只是简单地得到对象或者在Servlet中创建的Bean,然后通过这些动态的内容来生成动态显示的页面。
Struts 本质上就是在Model 2的基础上实现一个MVC架构,它只有一个中心控制器,采用定制转向的URL并采用Action来处理逻辑。
2.5 Struts 技术
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。
struts重要的表单对象是ActionForm,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。
Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间。
Struts包含了一组想相互协作的类、Servlet和JSP标记,它们共同组成了一个可重用的MVC模板。通过定义可以看出,Struts是Web应用的开发框架,Struts包含丰富的标记库和独立于该框架工作的实用程序类。图2-3 显示了Struts的基本结构。
图 2-3 Struts基本结构
通过图 2-3可以看出,采用Struts框架结构的Web应用程序主要由控制器、业务逻辑、模型和视图组成。其中的控制器、模型和视图为Struts框架的主要组成部分,而事务逻辑则是我们需要实现的系统业务逻辑处理部分。
2.6 Hibernate 技术
2.6.1 应用程序的分层体系结构
随着计算机应用软件的发展,应用程序逐渐由单层体系结构发展为多层体系结构。其中,三层结构是目前典型的一种应用软件结构。
表述层:提供与用户交互的界面,如GUI(图形用户界面),web页面等;
业务逻辑层:负责各种业务逻辑,直接访问数据库,提供对业务数据的保存、更新、删除和查询操作;
数据库层:负责存放管理应用的持久性业务数据。
三层结构的特点是:所有下层向上层提供调用的接口,具体实现细节对上层透明。层与层之间存在自上而下的依赖关系,即上层会访问下层的API,但下层不依赖于上层。
分离出的持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API[2]。
持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。
三层软件结构如图2-4所示:
图2-4 三层软件结构图
数据库的读写是一个很耗费时间和资源的操作,当大量用户同时直接访问数据库的时候,效率将非常低,如果将数据持久化就不需要每次从数据库读取数据,直接在内存中对数据进行操作,这样就节约了数据库资源,而且加快了系统的反映速度。增加持久化层提高了开发的效率,使软件的体系结构更加清晰,在代码编写和系统维护方面变得更容易。特别是在大型的应用里边,会更有利。同时,持久化层作为单独的一层,人们可以为这一层独立的开发一个软件包,让其实现将各种应用数据的持久化,并为上层提供服务。从而使得各个企业里做应用开发的开发人员,不必再来做数据持久化的底层实现工作,而是可以直接调用持久化层提供的API。
2.6.2 Hibernate的应用及API简介
Hibernate是一种Java语言下的对象关系映射解决方案。它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
Hibernate不仅管理Java类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB(EnterpriseJavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate使用 Java 反射机制 而不是字节码增强程序来实现透明性。Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。Hibernate支持各种关系数据库,从一对一到多对多的各种复杂关系。Hibernate核心接口如图2-5所示:
图2-5 Hibernate核心接口框图
2.7 开发环境及环境配置
2.7.1 Java/JSP系统环境
开发及测试的系统环境,我选择了Microsoft Windows Advanced Server 2000。由于其本身就是为服务器版的,适合用于搭设成为服务器端。要开发JSP,首先必须要求有Java环境,我选择了JavaTM Platform, Standard Edition 6 Development Kit。
作为JSP的容器,选择了目前非常流行的Tomcat 6.0。而IDE工具则选择了Eclipse(MyEclips)。
2.7.2 JSP环境的安装和环境变量的设置
首先安装JDK,安装Tomcat。
接下来配置环境变量:右键点击“我的电脑”,在弹出的菜单中点“属性”,在系统特性里选择“高级”,找到“环境变量”,点击进入后,“系统变量”就是我们需要设置的地方。
1、新建变量CATALINA_HOME,变量值为:
D:\apache-tomcat-6.0.18
2、新建JAVA_HOME变量,然后在变量值中输入以下内容:
C:\Program Files\Java\jdk1.6.0_12
3、编辑path变量:在原有的变量值后添加JDK的BIN目录
%JAVA_HOME%\bin;%CATALINA_HOME%\BIN
2.7.3 Eclipse开发工具
Eclipse平台体系结构主要由5部分组成,分别是平台运行库、工作区、工作台、团队支持和帮助。
在运行时内核是整个架构的核心,其他部件都是以插件方式来实现的。Eclipse采用动态加载机制,即只有需要的才加载,这样可以降低启动时间,提高资源使用效率。
工作空间插件即所谓的工作区,主要负责管理用户资源,例如用户创建项目的管理、文件变更等,并负责通知其他插件关于资源变更的信息。
工作台插件是Eclipse 提供的用户界面。它使用标准窗口工具包(SWT)和一个更高级的API(JFace)构建的。SWT是Java的Swing/AWT的非标准替代者,JFace则以SWT为基础,但更易于使用。
团队支持插件负责提供版本控制和配置管理支持。它允许用户根据需要添加视图,并与允许用户使用的任何版本控制系统交互。
帮助插件允许以HTML文件形式添加文档,并提供了一个附加的导航结构以便用户使用帮助功能搜索相关信息。
2.7.4 Tomcat服务器
Tomcat是Sun的JSWDK(Java Server Web Development Kit)中Servlet的运行环境(servlet容器)。Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。经过多年的发展,Tomcat不仅是JSP和Servlet规范的标准实现,而且具备了很多商业Java Servlet容器的特性,并被一些企业用于商业用途[4]。
Tomcat目录如下:
Tomcat_home
|---bin Tomcat:存放启动和关闭tomcat脚本;
|---conf Tomcat:存放不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文档;
|---lib/japser/common:存放Tomcat运行需要的库文件(JARS);
|---logs:存放Tomcat执行时的LOG文件;
|---src:存放Tomcat的源代码;
|---webapps:Tomcat的主要Web发布目录(包括应用程序示例);
|---work:存放jsp编译后产生的class文件;
2.8 数据库开发工具选择及配置
目前数据库的开发工具,大、中、小型的有很多,比如Oracle、MS SQL Server2000、DB2、MySQL、Access等等许多关系数据库,在系统开发初期,我用SQL server2000 进行数据库连接,因为可以于Windows 2000服务器系统很好的兼容,并且对大并发访问有很好支持,功能强大且使用简单,然而在后期的开发中,由于经常更换设计环境,而且自己用到Hibernate,对软件有一定要求,每次系统移植都要花很多时间配置环境,所以又更换了移植性很好的MySQL做数据库。
MySQL是一个小型关系型数据库管理系统,被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本[3]。
在本系统中,对MySQL的配置最重要是数据库字符编码设置,因为数据库的录入的大多是中文字符,默认编码为GBK会减少许多操作,配置如下:
default-character-set=gbk