搭建struts平台的一点经验之谈

基于MVC 的Struts 平台建设参考手册Writen by Minton-----Index -----1|----- |----- |-----2|-----|----- |----- |---

基于MVC 的Struts 平台建设参考手册

Writen by Minton

-----Index -----

1

|----- |----- |-----

2

|-----

|----- |----- |----- |----- |----- |----- |----- |-----

总结

附表:建立远程访问数据库链接

㈠ 环境配置

⒈JDK Install

从http://Java.sun.com/downloads可以下载到最新版本的jdk 开发包。 安装到指定路径,比如E:j2sdk1.4.2_10

配置环境变量:

右键点击“我的电脑”->“属性”->“高级”->“环境变量”,在“系统变量”中编辑path 选项(见图-1)。

,

图-1 设置path 环境变量1

将E:j2sdk1.4.2_10bin添加到path 变量中以分号与其他值分开。有一点必须注意,由于系统加载环境变量时是按照path 中变量值的顺序进行查找,所以必须保证你的jdk 环境变量排在所有变量值中的第一位。某些基于java 应用的软件可能自带jdk 包,比如oracle ,它在安装时自动设置jdk 的环境变量,而它的jdk 版本通常很低,所以会导致你的eclipse 启动不了。如果发生这种情况就要检查你的环境变量配置是否正确。

在“系统变量”中新建名为“JA VA_HOME”的变量,并进行如下编辑: JA VA_HOME=E:j2sdk1.4.2_10

在“系统变量”中新建名为“CLASSPATH ”的变量,并进行如下编辑: CLASSPATH =.; E:jdk1.4.2_10libtools.jar; E: 1.4.2_10jrelibrt.jar;

此外,在命令行中也可以进行上述操作,操作命令是set path和set classpath 见图-

2

图-2 设置path 环境变量2

执行完上述操作后就可以检验jdk 环境安装是否成功了,在命令行中执行下述操

,

作:

Java -version 显示版本信息(见图-3)。

图-3 java 命令

执行 javac 查看java 编译器是否正常(见图-4)。

图-4 javac编译器

如果上述操作失败,请回到前面的步骤重新配置。

⒉Config Tmocat

Tomcat 既是运行JSP 所必须的servlet 容器同时也可以作为web 服务器,但只适用于小型的web 应用,因为它毕竟是开源的项目,有很多bug (这点我深有体会)。如果你打算部署大型的web app请选择BEA 的Weblogic 或者JBOSS ,前提是你的内存足够大。

从这个地址http://jakarta.apache.org/builds/tomcat/release/可以下载Tomcat 服务器的最新版本。 目前Tomcat Release 有两个version family ,5.0和5.5,我不太清楚他们之间的区别,偶都试用过,没感觉什么特别,不过5.5系列好像更轻量级。 下面就开始安装Tomcat 吧。

开始运行安装文件,安装过程中会提示你设置端口号,你可以接受默认值8080,也可以设成知名端口80,前提是80没有被其他应用或服务占用(这点强烈bs 下oracle 的http 服务器,做的很烂还老霸占80端口),将文件解压到E 盘根目录,E:Tomact 5.5。

在“系统变量”--->“新建”

,

在变量名中输入:TOMCAT_HOME,变量值中输入:E:Tomact 5.5然后确定; 测试:

启动tomcat ,本人建议从%TOMCAT_HOME%bintomcat5.exe(或者tomcat5.0中的%TOMCAT_HOME%binstartup.bat)启动,因为你可以看到很多运行在后台的信息帮助你发现程序中的bug 。

启动后在地址栏中输入http://localhost:8080/ 你将会看到Apache 的默认页面(猫不像猫,虎不像虎,见图-5)

图-5 Tmocat默认首页

也许你希望通过域名来访问你的网站而不是通过localhost (看上去很傻),这非常容易,我们可以申请免费的域名空间。http://www.3322.org可以提供免费的域名服务,只要在上面注册就可以申请你自己的域名了(实际上是它的二级域名),域名访问有很多优点,一是看上去很专业(我自己感觉啊),二是域名与IP 绑定,这样如果你在别处上网访问只需要敲入你设定好的域名而不需要记住冗余的IP 地址了(我记性很差,到现在电脑IP 都记不住)。

申请好域名后,还需要在Tomat 里进行设置,以便通知它你注册了该域名。 打开%TOMCAT_HOME%confserver.xml(这个文件很重要)找到Engine name="Catalina" 选项,将defaultHost 设置为你的域名,下面是我的设置:

其次,找到选项,将name 设置为域名。下面是我的设置:

unpackW ARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

,

通过以上设置就可以用域名访问你的网页了。

通常情况下你的web 应用程序都是放到%TOMCA T_HOME%webapps中的,不过我们可以通过设置虚拟目录来改变web 应用的目录。

例如,我的web 应用程序根目录是XinhuaBook ,存放在E:tomcat 5.5下面,那么我该如何设置虚拟目录呢?

很简单,打开server.xml 文件,找到Host 选项,设置appBase 属性值为你的根目录文件夹名,例如

unpackW ARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

然后在Host 中添加属性值

„„„„„„

“path ”是地址栏中显示的路径名,图简单我设为了空,“docBase ”指明了你的web 应用程序所在的物理路径。通过以上设置应该就可以访问你的虚拟目录了。 对了,server.xml 里的connector 选项可以设置端口,如果你的Tomcat 启动后控制台提示某某端口被占用了,你就得修改这个值了。

⒊Eclipse Usage

Eclipse 的配置比较简单,我这里说的可能不是很多。

其实Eclipse 真的是很强大的IDE 了,与Jbuilder ,NetBeans 相比,最大的优势就是opensource and Free 。所有的插件和Jar 包都可以从网上获得。其次,界面友好,操作灵活,不像Jbuilder ,启动时跟个老牛似的,而且它的最大问题是光标经常错误定位,偶以前用过J9,那叫一个郁闷啊!光标不听鼠标的指挥,产生错位现象,打那以后我就对Jbuilder 一点好感都没有了。

有人会问了,如果我想开发GUI 程序,Eclipse 能行么?Eclipse 告诉你他是Omni (万能的,无所不知的)的,它通过插件(Plug -In )来实现所有附加功能。举个简单例子,比如你想在Eclipse 中对xml 进行编辑,首先你要下载xml 编辑器的开发包,目前最好的是Xmlbuddy 。然后在eclipse 目录下(就是eclipse.exe 所在目录)建立一个名字为links 的文件夹,在该文件夹下创建xmlbuddy .link 文件,接着打开它,写入如下语句path=E:/eclipseplugins/xmlbuddy,这也就告诉我们必

,

须在E 盘下建个文件了,名字是eclipseplugins ,其次将先前下载的xmlbuddy 包解压到该文件夹中,一切便大功告成了。启动eclipse ,你便可以看到xml 编辑器了(见图-6)。

图-6 插件的使用

Eclipse 还有很多优秀的功能,比如Junit (单元测试工具)是软件开发中必不可少的debug 工具以及CVS 版本控制器(见图-6)。

㈡ MVC 的建设

MVC 是什么?

基于Web 的MVC framework在J2EE 的世界内已是空前繁荣。TTS 网站上几乎每隔一两个星期就会有新的MVC 框架发布。目前比较好的MVC, 老牌的有Struts 、Webwork 。新兴的MVC 框架有Spring MVC、T apestry 、JSF 等。这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica 、VRaptor 等。这些框架都提供了较好的层次分隔能力。在实现良好的MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。

不管出现什么样的MVC 实现方案,我们必须理解什么是MVC 。

MVC (Modle-View-Controller, 模型-视图-控制器)模式是Xerox PARC在20世纪80年代为编程语言Smalltalk-80所设计的一种软件设计模式,至今已被广泛

,

使用,并被推荐为Sun 公司J2EE 平台的设计模式,其为开发交互式应用系统提供了一个优秀的设计模式,受到越来越多开发者的欢迎。

MVC 模式主要由3个部分组成:模型、视图和控制器,其结构如图-7所示。

图-7 MVC结构

模型表示业务逻辑和业务规则等,在MVC 的三个部件中拥有最多的处理任务。它可以用JavaBean 和EJB 等组件技术来处理数据库的访问。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

视图是屏幕上的显示。模型进行操作之后,其结果就是通过视图来显示的。在视图中其实没有真正的处理发生,只是作为一种输出数据并允许用户操作的方式。 控制器用于管理用户与视图发生的交互。一旦用户想对模型进行处理时,它不能直接去执行模型,而是通过控制器来间接地实现。控制器能从视图中取值,然后将相应的值传给模型进行处理。控制器接受用户的输入并调用模型和视图去完成用户的需求。

由上述可知,MVC 模式的处理过程是:首先由控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图返回数据,并通过表达层呈现给用户。

Struts 框架

Struts 是Apache 组织的一个开放源码项目。Struts 是一个比较好的MVC 框架,提供了对开发MVC 系统的底层支持,它采用的主要技术是Servlet ,JSP 和Custom tag library。其基本构成如图-8所示。

,

图-8 Struts处理模型

由图-8可以看出,在Struts 框架中Controller 功能由ActionServlet 和ActionMapping 对象构成,核心是一个Servlet 类型的对象ActionServlet ,它用来接受客户端的请求。ActionServlet 包括一组基于配置的ActionMapping 对象,每个ActionMapping 对象实现了一个请求到一个具体的Model 部分中Action 处理器对象之间的映射。

Model 部分由Action 和ActionForm 对象构成。所有的Action 处理器对象都是开发者从Struts 的Action 类派生的子类。Action 处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View 组件以产生响应。Struts 提供的ActionForm 组件对象可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts 提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action 处理器对象可以直接对它进行读写,而不再需要和request 、response 对象进行数据交互。通过ActionForm 组件对象实现了对View 和Model 之间交互的支持。

View 部分是通过JSP 技术实现的。Struts 提供了自定义的标记库,通过这些自定义标记可以非常好地和系统的Model 部分交互,通过使用这些自定义标记创建的JSP 表单,可以实现和Model 部分中的ActionForm 的映射,完成对用户数据的封装。

使用struts 之前必须获得该框架所需JAR 包文件和标签库描述文件TLD 。访问http://jakarta.apache.org,可以下载最新的Struts 软件包,把struts 压缩文件解压后,在其lib 子目录下提供了struts 框架所必须的JAR 文件。在struts 软件包的lib 子目录下还提供了所有的struts 标签库描述TLD 文件:

图-9 Tld描述文件

了解了struts 的基本结构之后,下面我简要谈谈一些配置某些重要文件时应该注意的问题。

⒈构建视图

视图部分主要包括包括Jsp 文件以及自定义标签文件。

按照我的理解,struts 处理的核心就是表单,所有MVC 的处理都是围绕着表单的request 和response 来进行的。

Struts 的jsp 文件中可以包括标准的html 元素,也可以加入struts 自带的标签,比如struts,struts,struts,struts等。

,

下面是一个运用了struts 标签的jsp 文件:

图-10 应用struts 标签的jsp 文件

最近网络上掀起了Ajax (注:有的学者把它翻译成阿贾克斯,荷兰一个很牛的足球俱乐部)风暴,它集成了Xml 和javascript 的优点,使得网页的显示更加动态,Gmail ,google earth 都应用了该技术。目前有一些文章论述在struts 中应用Ajax ,我看了,而且也实验过。In my opinion,没感觉有什么特别的优点,也许我孤陋寡闻了,不过仍希望你在实践了struts 后有机会尝试Ajax 的魔力,至少

,

我知道IBM CRL面试时是要问你会不会Ajax 。

每个网站都有它的结构,基本上由视图、配置文件、类库和源程序构成。Struts 网站的一个典型结构如下图所示:

图-11 web结构图

Css目录主要存放样式表说明文件。

head可以作为应用的子目录来存储jsp 或html 文件,以便网站结构更清晰。 img 存储图像文件

scripts存储javascript 等脚本说明文件

WEB-INF 存储配置文件、类库和源程序

某些html 或者jsp 页面也可以放在根目录下。

我们再来看看WEB-INF的内容:

图-12 WEB-INF的内容

classes 用于存放源程序

lib 用于存放源程序所要调用的库文件

shareStruts 存放struts-config.xml 的配置文件

标签: