当前位置: 技术问答>java相关
用Struts开发你的网站(一)
来源: 互联网 发布时间:2017-04-17
本文导语: 关于Struts Struts Framework是一种基于Java的技术,Web应用程序开发人员通过Struts Framework即可充分利用面向对象设计、代码重用以及“编写一次、到处运行”的优点。Struts提供了一种创建Web应用程序的框架,其中对...
关于Struts
Struts Framework是一种基于Java的技术,Web应用程序开发人员通过Struts Framework即可充分利用面向对象设计、代码重用以及“编写一次、到处运行”的优点。Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。
在钻研Struts之前你应该比较熟悉JSP、Java编程和一定的设计模式,尤其应该了解MVC(Model-View-Controller:模型、视图和控制器)软件程序架构。学习Struts一开始会比较难,一旦理解了这一技术你将发现自己掌握了一种开发大规模Web应用程序的设计利器。
MVC原理
Struts是对MVC设计模式的一种实现。MVC设计模式为构建可扩展、可重用的代码打下了一个坚实的基础。MVC设计模式最吸引人之处在于它迫使你必须抽象自己的代码,把项目分解为表示、逻辑和控制三部分。
MVC设计模式中的“模型”指的是真正完成任务的代码。对大多Web应用程序来说,功能比界面感觉更重要。在模型同界面相分离的情况下,代码即可实现可管理性和可重用性。假如你开发了一个保险应用程序,其中的“模型”就是处理要求、计算保险费和同数据库交互的那些代码。模型通常也被称做“业务逻辑”。
所谓的“视图”其实就是界面。在MVC模式下,通常的设计前提是界面任务并不大。当然,视图应该具有一定的功能性并遵守可用性的约束,但视图(界面)不应当处理数据。事实上,界面的每一部分都只能包含采集数据的足够逻辑并把它传递给设计模式中的其他组成部分供处理。从理论上说,如果你在模型中实现全部业务逻辑那么你可以创建多个视图,也就是桌面应用程序、数据库系统或者Web应用程序的界面。由于所有最麻烦的工作代码都保存在了模型上,所以创建新的视图并不令人感到过分的痛苦,产生软件编码错误的可能性也就随之大大降低了。
“控制器”控制着模型和视图之间的交互过程。它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型。
在介绍了MVC之后,现在我们就下载Struts Framework、了解Struts采用MVC设计技术的原理。
获取Struts Framework
Struts Framework 可以从Jakarta项目的网站(http://jakarta.apache.org/struts/)上获取。Struts Framework是一种开放源代码软件,所以你可以获得软件源代码亲自编译程序。大多数用户并不需要源代码,但知道它也不是坏事,说不定以后就用得着。
Struts随带了众多示例,所有这些示例都打包为WAR文件(Web Application Archive)供部署在应用服务器上。假如你想用Struts创建自己的应用程序,那么你会在Struts库目录下找到所有你需要的东西。在这个目录下有个JAR文件包含了所有的框架源代码和标签库的全部定义。在创建新应用程序的时候需要把这些文件拷到WEB-INF目录下供部署用。将来我们会撰文讨论如何完成这些工作,目前你仅需要知道它们都放在什么地方就可以了。
MVC和Struts Framework
现在我们就看看Struts Framework是如何采用MVC模式来创建Web应用程序的。
视图
Struts采用JSP作为MVC的视图。每一视图都是采用了定制标签库的JSP页面,这些定制标签库则由Struts Framework提供。全部表单元素都是用定制标签编码的,所以这些页面能够很方便地同控制器交互。每一个表单都通过映射JSP到servlet的请求这一方式指向控制器的特定入口点。
控制器
控制器就是Java servlet,由Struts Framework提供,负责视图和模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的java类以进行相应的处理。控制器还指定下一个视图的位置。
模型
Java beans就是模型的代表。对进入控制器的每个入口点来说,bean的作用是存储从视图获取的信息,同时被称为“行动类”一种Java类则被指定为对表单输入采取行动。行动类(action class)实现了业务逻辑。
以上介绍了Struts Framework同MVC之间的关系,接下来用Struts创建应用程序。
为了用Struts Framework创建新的应用程序,你首先得创建一个新目录树,如下所示:
MyWebApp/
WEB-INF/
classes/
lib/
然后把struts.jar文件从Struts下载目录下的lib目录拷贝到以上目录树的lib目录,同时请把所有的标签库描述符(TLD)文件从Struts lib目录拷贝到WEB-INF目录。
在本文的示例应用程序中,你将创建一个Web应用程序,该应用程序相当简单,它由一个登录页面和提交新数据到相应服务的页面组成。登录页面会获取用户名和口令,然后把这些信息将保存在一个Java bean内。
创建web.xml文件
首先得创建web.xml部署文件,它应该保存在WEB-INF目录下。该文件说明新创建的Web应用程序同时还负责实例化你的控制器servlet。
文件如下:
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
application
ApplicationResources
debug
2
detail
2
validate
true
1
action
*.action
bloggerLogin.jsp
/WEB-INF/struts-html.tld
/WEB-INF/struts-html.tld
/WEB-INF/struts-bean.tld
/WEB-INF/struts-bean.tld
/WEB-INF/struts-logic.tld
/WEB-INF/struts-logic.tld
在如上所示定义了Web应用程序之后我们再了解下控制器的配置细节。
控制器的配置:struts-config.xml
控制器的配置决定了发给控制器的请求将得到怎样的处理。你不妨阅读下struts-config.xml文件,从中可以看出,所有冠以*.action的请求都被映射到了控制器。现在你就必须指定对每一请求该如何处理。
文件如下:
就我们的示例应用程序来说,你需要处理登录请求和页面提交的信息。每个视图都分别具有相应的表单Java bean和用于处理的action类。
配置文件分为两个部分:其一是表单Java bean,负责指定存储来自视图的参数值以及action映射值的Java类。第一部分处理提交的信息,而第二部分则负责处理登录。以后我们主要讨论对表单的处理。
action映射把入站的servlet请求同表单和action类联系了起来。第1步是为登录过程创建映射。发给服务器的实际请求是页面bloggerLogin.action,但是你只设置了前半部分。接下来,你还得把所有给bloggerLogin.action的请求都保存在bloggerLogin表单Java bean内(早就配置为xmlrpc.bloggerUserForm)。xmlrpc.bloggerUserAction类负责处理这个Java bean。在action标签内的转发XML元素代表了控制器返回的视图名。每种action类都必须返回下一视图的名字,这样你就可以把文件名保存在配置文件里了。
创建视图
视图用JSP创建,用Struts标签库同表单Java bean交互,意味着所有的表单元素都必须用Struts标签库来创建。下面所示为有关的源代码,你可以从中了解视图的外观。
Struts Framework是一种基于Java的技术,Web应用程序开发人员通过Struts Framework即可充分利用面向对象设计、代码重用以及“编写一次、到处运行”的优点。Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。
在钻研Struts之前你应该比较熟悉JSP、Java编程和一定的设计模式,尤其应该了解MVC(Model-View-Controller:模型、视图和控制器)软件程序架构。学习Struts一开始会比较难,一旦理解了这一技术你将发现自己掌握了一种开发大规模Web应用程序的设计利器。
MVC原理
Struts是对MVC设计模式的一种实现。MVC设计模式为构建可扩展、可重用的代码打下了一个坚实的基础。MVC设计模式最吸引人之处在于它迫使你必须抽象自己的代码,把项目分解为表示、逻辑和控制三部分。
MVC设计模式中的“模型”指的是真正完成任务的代码。对大多Web应用程序来说,功能比界面感觉更重要。在模型同界面相分离的情况下,代码即可实现可管理性和可重用性。假如你开发了一个保险应用程序,其中的“模型”就是处理要求、计算保险费和同数据库交互的那些代码。模型通常也被称做“业务逻辑”。
所谓的“视图”其实就是界面。在MVC模式下,通常的设计前提是界面任务并不大。当然,视图应该具有一定的功能性并遵守可用性的约束,但视图(界面)不应当处理数据。事实上,界面的每一部分都只能包含采集数据的足够逻辑并把它传递给设计模式中的其他组成部分供处理。从理论上说,如果你在模型中实现全部业务逻辑那么你可以创建多个视图,也就是桌面应用程序、数据库系统或者Web应用程序的界面。由于所有最麻烦的工作代码都保存在了模型上,所以创建新的视图并不令人感到过分的痛苦,产生软件编码错误的可能性也就随之大大降低了。
“控制器”控制着模型和视图之间的交互过程。它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型。
在介绍了MVC之后,现在我们就下载Struts Framework、了解Struts采用MVC设计技术的原理。
获取Struts Framework
Struts Framework 可以从Jakarta项目的网站(http://jakarta.apache.org/struts/)上获取。Struts Framework是一种开放源代码软件,所以你可以获得软件源代码亲自编译程序。大多数用户并不需要源代码,但知道它也不是坏事,说不定以后就用得着。
Struts随带了众多示例,所有这些示例都打包为WAR文件(Web Application Archive)供部署在应用服务器上。假如你想用Struts创建自己的应用程序,那么你会在Struts库目录下找到所有你需要的东西。在这个目录下有个JAR文件包含了所有的框架源代码和标签库的全部定义。在创建新应用程序的时候需要把这些文件拷到WEB-INF目录下供部署用。将来我们会撰文讨论如何完成这些工作,目前你仅需要知道它们都放在什么地方就可以了。
MVC和Struts Framework
现在我们就看看Struts Framework是如何采用MVC模式来创建Web应用程序的。
视图
Struts采用JSP作为MVC的视图。每一视图都是采用了定制标签库的JSP页面,这些定制标签库则由Struts Framework提供。全部表单元素都是用定制标签编码的,所以这些页面能够很方便地同控制器交互。每一个表单都通过映射JSP到servlet的请求这一方式指向控制器的特定入口点。
控制器
控制器就是Java servlet,由Struts Framework提供,负责视图和模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的java类以进行相应的处理。控制器还指定下一个视图的位置。
模型
Java beans就是模型的代表。对进入控制器的每个入口点来说,bean的作用是存储从视图获取的信息,同时被称为“行动类”一种Java类则被指定为对表单输入采取行动。行动类(action class)实现了业务逻辑。
以上介绍了Struts Framework同MVC之间的关系,接下来用Struts创建应用程序。
为了用Struts Framework创建新的应用程序,你首先得创建一个新目录树,如下所示:
MyWebApp/
WEB-INF/
classes/
lib/
然后把struts.jar文件从Struts下载目录下的lib目录拷贝到以上目录树的lib目录,同时请把所有的标签库描述符(TLD)文件从Struts lib目录拷贝到WEB-INF目录。
在本文的示例应用程序中,你将创建一个Web应用程序,该应用程序相当简单,它由一个登录页面和提交新数据到相应服务的页面组成。登录页面会获取用户名和口令,然后把这些信息将保存在一个Java bean内。
创建web.xml文件
首先得创建web.xml部署文件,它应该保存在WEB-INF目录下。该文件说明新创建的Web应用程序同时还负责实例化你的控制器servlet。
文件如下:
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
application
ApplicationResources
debug
2
detail
2
validate
true
1
action
*.action
bloggerLogin.jsp
/WEB-INF/struts-html.tld
/WEB-INF/struts-html.tld
/WEB-INF/struts-bean.tld
/WEB-INF/struts-bean.tld
/WEB-INF/struts-logic.tld
/WEB-INF/struts-logic.tld
在如上所示定义了Web应用程序之后我们再了解下控制器的配置细节。
控制器的配置:struts-config.xml
控制器的配置决定了发给控制器的请求将得到怎样的处理。你不妨阅读下struts-config.xml文件,从中可以看出,所有冠以*.action的请求都被映射到了控制器。现在你就必须指定对每一请求该如何处理。
文件如下:
就我们的示例应用程序来说,你需要处理登录请求和页面提交的信息。每个视图都分别具有相应的表单Java bean和用于处理的action类。
配置文件分为两个部分:其一是表单Java bean,负责指定存储来自视图的参数值以及action映射值的Java类。第一部分处理提交的信息,而第二部分则负责处理登录。以后我们主要讨论对表单的处理。
action映射把入站的servlet请求同表单和action类联系了起来。第1步是为登录过程创建映射。发给服务器的实际请求是页面bloggerLogin.action,但是你只设置了前半部分。接下来,你还得把所有给bloggerLogin.action的请求都保存在bloggerLogin表单Java bean内(早就配置为xmlrpc.bloggerUserForm)。xmlrpc.bloggerUserAction类负责处理这个Java bean。在action标签内的转发XML元素代表了控制器返回的视图名。每种action类都必须返回下一视图的名字,这样你就可以把文件名保存在配置文件里了。
创建视图
视图用JSP创建,用Struts标签库同表单Java bean交互,意味着所有的表单元素都必须用Struts标签库来创建。下面所示为有关的源代码,你可以从中了解视图的外观。