1.3 编程高手的预言:人人都有开心网
实际上,开心网就是一种SNS。现在网上有很多个人或小公司开发的开心网。虽然功能可能远不如kaixin和kaixin001,但也不失为另一种选择。为了满足广大开发人员开发类似开心网的SNS的需求,本书将介绍一个采用Ext JS及SSH技术实现的模拟Windows桌面的开心网系统,也可称为开心桌面。由于篇幅所限,本书的开心网系统不可能做得像kaixin或kaixin001一样复杂,但读者可以利用本书介绍的技术及例子实现更复杂、更绚丽的功能。
1.3.1 自己搭建开心网:绚丽页面先睹为快
虽然开心网系统的规模比较大,以个人之力想实现一个完整的开心网十分困难,但仍然可以选择其中的几项功能来实现,既学习了技术,还会有成就感。当然,如果能获得利益就更好了。
本书要实现的开心网采用了Java及其相关的技术来实现,主要的开发工具是Eclipse for Java EE,读者可以到http://www.eclipse.org下载最新的版本。
除了开发工具外,Web服务器采用了Tomcat 6.x,当然,读者也可以很容易地将开心网移植到其他的Web(Java EE)服务器,例如,WebLogic、WebSphere、JBoss等。在具体的技术方法上采用了现在非常流行的Ajax客户端框架Ext JS来实现Web页面部分。后面的系统将采用SSH和三层结构来完成。其中SSH是Struts 2、Spring和Hibernate。这是三种很常用的框架。它们分别被用于MVC模式、IOC和数据操作。这些技术的详细情况将在下一节介绍。下面来看一下我们将要搭建的开心网的一些绚丽的页面。这些页面如图1.4、图1.5和图1.6所示。
图1.4 主页面
图1.5 电子相册
图1.6 赠送礼物
1.3.2 万丈高楼平地起:技术储备
本书实现的开心网所采用的核心技术涉及Ext JS、Struts 2、Spring和Hibernate。由于篇幅所限,本书主要介绍Ext JS及SSH的整合技术。如果读者想了解更多的关于Struts 2、Spring及Hibernate的知识,请参阅笔者所著的《Java Web开发速学宝典》一书。
开发开心网客户端除了需要用到传统的Web技术(HTML、CSS、Java Script等)外,还涉及近年来很流行的Ajax技术。自Ajax之父Jesse James Garrett于2005年提出这一新概念之后,这一沉睡了多年的技术,换上新衣,一下子变成Web应用程序中最为受宠的功能。经过将近5年的发展,Ajax技术在国际社区取得了很大的发展,已经比较成熟。Ajax发展至今,也诞生了很多优秀的框架,Ext JS就是其中的佼佼者。
在了解Ext JS之前,首先需要了解一下什么是YUI。
YUI(Yahoo! UI Library)是一个开源的JavaScript库,与Ajax、DHTML和DOM等技术一起使用可以用于创建交互性极强的Web应用,它还包含丰富的CSS资源。
Ext JS最初是YUI的一个扩展,然而,它现在也可以扩展至JQuery和Prototype。自1.1版开始,Ext JS已经可以独立运行,不需要依赖于那些外部库,虽然它仍然可以和其他技术集成。现在,Ext 3.0版可以使用许多不同的基础库,例如YUI、JQuery和Prototype,甚至可以独立的运行。
Ext JS是一个非常棒的Ajax框架,可以用来开发具有十分华丽外观的富客户端应用(从上一节的开心网页面就可以看出这一点),能使B/S应用更加具有活力。它是一个用JavaScript编写,与后台技术无关的前端Ajax框架。因此,可以把Ext JS用在.NET、Java、PPH等各种语言开发的应用程序中。
SSH整合是开心网中涉及的另一项技术。Struts 2、Spring和Hibernate虽然都可以独立运行(Struts 2只能用于Web应用,而Spring和Hibernate可以运行在任何类型的Java应用程序中)。但将三者有机地整合到一起会使程序更容易维护和升级(尤其对于大型的应用程序而言)。
Struts2的核心思想是MVC模式。利用Struts 2中的Action可以将客户端页面和服务端的程序分离,这样更容易升级和维护。而Hibernate主要用于数据的持久化和ORM映射。利用Hibernate可以将数据表的记录映射成Java对象,并且Hibernate提供了大量的功能来操作这些Java对象。而且这种映射是透明的,也就是说,开发人员可以在不修改代码的前提下修改Hibernate所指向的数据库类型,如从SQL Server切换成Oracle。
Spring的功能非常多,但主要的功能是通过XML配置文件来装配Java Bean。其核心思想是控制反转(Inversion of Control, IOC)模式。通过Spring可以将很多代码放到XML文件中供其他程序复用,从而大大减少了工作量。
将Struts 2、Spring和Hibernate相结合就意味着开心网使用的是MVC模式,并且可以很容易地移植数据库,还可以利用Spring实现自动装载的功能。例如,当Action对象被创建时, Spring会根据XML文件的配置和Action类中的代码来自动创建DAO或Service对象实例(这部分将在第2章详细介绍)。
1.3.3 开心网的安装和运行
在本节将介绍如何安装和运行本书实现的开心网系统。首先在读者的机器上应有JDK(1.5或以上版本)、Eclipse for Java EE(3.4或以上版本)、Tomcat(6.0或以上版本)和MySQL(5.0或以上版本)。这4个软件的安装非常容易(在安装MySQL时root的密码必须是1234)。安装完这些软件后,需要在Eclipse中配置Tomcat。单击【Window】> 【Preferences】菜单项,打开【Preferences】对话框,在左侧的选项树中选中【Service】>【Runtime Environments】选项,单击右侧的【Add】按钮,选择Tomcat服务器,如图1.7所示。
单击【Next】按钮,进入下一个页面来设置Tomcat的安装目录,如图1.8所示。
图1.7 选择Tomcat服务器
图1.8 设置Tomcat的安装目录
在进行上面的设置后,【Server Runtime Environments】列表中会显示刚才选择的Tomcat服务器,如图1.9所示。
除此之外,在【Server】视图中也会显示刚才选择的Tomcat服务器,如果在服务器可发布的工程中没有读者需要发布的工程,可以通过单击Tomcat服务器右键菜单的【Add and Remove Projects】菜单项来添加相应的Eclipse工程。如果想启动、停止或调试Tomcat,单击Tomcat服务器右键菜单中相应的菜单项即可。图1.10是【Server】视图中显示相关工程的效果。
图1.9 【Server Runtime Environments】列表
图1.10 【Server】视图
接下来在src目录中找到script.txt文件,该文件保存了建立数据库的脚本,复制该文件的内容,在MySQL的命令行控制台中执行这些命令。
在进行完上面的操作后,可以将src目录中的源代码目录导入到Eclipse中(最好将这些目录复制到硬盘上)。操作的方法是在【File】菜单中选择【Import】子菜单项,弹出【Import】对话框,按图1.11所示选中导入项,并进入下一个页面,如图1.12所示。单击【Browser】按钮选择要导入的工程目录后,单击【Finish】按钮完成导入。
图1.11 选择要导入的项
图1.12 选择要导入的工程目录
在导入相应的工程后,需要在【Servers】视图的右键菜单中选择【Add and Remove Projects】菜单项,在弹出的对话框左侧选择要运行的工程,将其放到右侧的列表框中,如图1.13所示。现在可以在Eclipse中启动Tomcat,并运行程序了。本书实现的每一个例子的URL在相应的位置都已给出。读者可以在阅读到相应的位置时再运行对应的例子。
图1.13 选择要运行的工程