IBMSoftwareGroup®©2008IBMCorporationIBMSoftwareGroup第一章:认识体验Struts2主讲:刘雷IBMSoftwareGroupIBMSoftwareGroupStruts2已经推出了稳定的版本,其先进的架构和设计思想,随着时间的推移,相信会有越来越多的人开始使用struts2原有的人气,加上采用了WebWork的设计架构,Struts2必将成为最为流行的Web开发框架之一。•下载并安装Struts2•感受Struts2的开发流程IBMSoftwareGroupIBMSoftwareGroup什么是Web框架IBMSoftwareGroupIBMSoftwareGroup模型1与模型2IBMSoftwareGroupIBMSoftwareGroup模型1架构IBMSoftwareGroupIBMSoftwareGroup模型2IBMSoftwareGroupIBMSoftwareGroupIBMSoftwareGroupIBMSoftwareGroup模型2架构IBMSoftwareGroupIBMSoftwareGroup模型1与模型2的选择IBMSoftwareGroupIBMSoftwareGroup从struts1到struts2WebWork是由OpenSymphony组织()开发的基于MVC架构模式的J2EEWeb框架。Tapestry是一个开源的基于组件的Web应用开发框架,它使用组件对象模型来创建动态的,交互的Web应用。SpringMVCWeb框架是整个Spring集成框架的一部分。IBMSoftwareGroupIBMSoftwareGroupStruts1的缺点Struts1存在的缺点主要有二个:令人头痛的ActionForm单元测试困难IBMSoftwareGroupIBMSoftwareGroupIBMSoftwareGroupIBMSoftwareGroupIBMSoftwareGroupIBMSoftwareGroupStruts2的诞生IBMSoftwareGroupIBMSoftwareGroup总结Struts2框架由WebWork和Struts1框架发展而来准备开发环境安装JDK安装Tomcat安装MyEclipse安装数据库MySql或OracleIBMSoftwareGroupIBMSoftwareGroup下载并安装Struts2一:下载和安装struts2要使用struts2,首先要从ApacheSoftwareFoundation的网站上下载Struts2的开发包。Struts2的下载地址如下:下载完成后,需要注意的是Struts2和WebWork2一样,都是构建在XWork框架基础之上,而XWork仍然是由opensymphony组织负责开发和维护的,所以你想完整地学习和研究Struts2,还需要获取XWork的源代码。在Struts2的完整下载版中,只包含了Struts2的源代码和XWork的类库,没有包含XWork的源代码。XWork的下载地址是:如果你下载它的完整版本,其中就包含了XWork的源代码。IBMSoftwareGroupIBMSoftwareGroupStruts2的下载和安装下载和安装Struts2.0请按以下步骤进行:登录站点,下载struts2的最新版。下载时有如下几个选项:FullDistribution的完整版,通常建议下载该选项,该选项包括struts2的示例应用,空示例应用,核心库,源代码和文档等ExampleApplications:仅下载struts2的空示例应用,这些示例对学习struts2有很大的帮助,下载struts2的完整版已经包含了该项的全部应用。BlankApplicationonly:仅下载struts2的空示例应用,这个空应用研究已经包含在ExampleApplications选项下。EssentialDependenciesOnly:仅下载struts2的核心库,下载struts2的完整版时将包括该项的全部内容。Documentation:仅下载struts2的相关文档,包含struts2的使用文档、参考手册和API文档等。下载struts2的完整版时将包括该项的全部内容。Source:下载struts2的全部源代码。AlternativeJava4JARs:下载可选的JDK1.4支持的JAR包。IBMSoftwareGroupIBMSoftwareGroupStruts完整版的文件结构apps:该文件夹下包含了基于struts2的示例应用。docs:该文件夹下包含了struts2的相关文档,包括struts2的快速入门,struts2的文档以及API文档等内容。lib:该文件夹下包含了struts2框架的核心类库,以及struts2的第三方插件类库。src:该文件夹下包含了struts2框架的全部源代码。开发struts2工程需要的基本JAR包:struts2-core-2.0.11.jarxwork-2.0.4.jarognl-2.6.11.jarfreemarker-2.3.8.jarcommons-logging-1.0.4.jarIBMSoftwareGroupIBMSoftwareGroupStruts2在web.xml中的配置!--定义struts2的FilterDispatcher的Filter--filter!--定义核心Filter的名字--filter-namestruts2/filter-name!--定义核心Filter的实现类--filter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class/filter!--FilterDispatcher的Filter用来初始化struts2并且处理所有请求--filter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mappingIBMSoftwareGroupIBMSoftwareGroupStruts2开发总体步骤一:准备类库:不同的开发需求所用的类库是不一样的,但至少需要如下的5个类库。struts2-coor-2.0.11.jar、xwork-2.0.4.jar、ognl-2.6.11.jar、freemarker-2.3.8、commons-logging-1.0.4.jar、二:在web.xml文件中配置FilterDispatcher.这一步是固定的,大家可以一个web.xml文件后保存起来,以后都用这个文件。三:开发action。针对每一个功能点,编写一个action类。四:编写相关的结果页面。针对action返回的结果代码,编写相应的结果页面。五:在web应用程序的WEB-INF/classes目录下创建struts.xml,对action进行配置,将action与结果页面关联起来。IBMSoftwareGroupIBMSoftwareGroupHelloWorld程序由于”HelloWorld”程序名扬四海,“程序中人”无人不知,无人不晓,我等书写之人亦不能免俗。首先给出一个使用struts2框架开发的”HelloWorld”Web程序。步骤一:新建Web项目取名helloworld步骤二:导入struts2类库---------包位于struts2安装目录的lib目录下。struts2-core-2.0.11.jar-------struts2框架的核心类库xwork-2.0.4.jar------XWork类库,Struts2在其上构建ognl-2.6.11.jar-------对象图像导航语言(ObjectGraphNavigationLanguage),Struts2框架使用的一种表达式语言freemarker-2.3.8--------Struts2的UI标签的模板使用FreeMarker编写commons-logging-1.0.4.jar------ASF出品的日志包,Struts2框架使用这个日志名来Log4j和JDK1.4+的日志记录IBMSoftwareGroupIBMSoftwareGroupHelloWorld程序步骤三:在web.xml文件中配置FilterDispatcherstruts2框架是基于MVC模式开发的,它提供了一个核心控制器,用于所有的请求进行统一处理,这个控制器是由一个名为FilterDispatcher的servlet过滤器来充当的。你需要在web.xml文件中配置FilterDispatcher过滤器,指定映射到FilterDispatcher的URL样式,匹配这个URL样式的所有请求,都将被Web容器交由FilterDispatcher进行处理。编辑WebRoot\WEB-INF\web.xml文件,添加FilterDispatcher过滤器的配置,web.xml的完整代码如下:IBMSoftwareGroupIBMSoftwareGroupHelloWorld程序步骤四:编写Action类一个action就是一段只有特定的URL被请求时才会执行的代码。FilterDispatcher根据请求URL的不同,来执行对应的action。在Struts2中,action执行的结果(成功或者失败)通常都对应着一个要呈现给用户的result,这个result可以是HTML页面,也可以是一个PDF文件,或者Excel电子表格。所有的result都是通过字符串名字来标识的,FilterDispatcher根据action返回的结果字符串来选择对应的result显示给用户。Action与其对应的result是在一个名为struts.xml的配置文件中进行配置的。在struts2中,可以用一个普通的Java类作为Action类,只要这个类提供如下的方法[实现即可:publicStringexecute();IBMSoftwareGroupIBMSoftwareGroupHelloWorld程序IBMSoftwareGroupIBMSoftwareGroupHelloWorld程序在struts2中,所有的action必须返回一个字符串类型的结果代码,以标识要呈现给用户的result.Action接口中定义的定义的常量字符串,从语义上为你定义好了在action执行的不同情况下应该向用户呈现的result的名字,当然你可以为result的名字,当然你可以为result取其它的名字,不过这种行为是不建议的,除非上述定义的字符常量不能满足你的应用需求。下面我们编写一个Action类HelloWorldAction,实现com.opensymphony.xwork2.Action接口。建包com.ibm.action、建类HelloWorldAction,实现com.opensymphony.xwork2.Action接口。publicclassHelloWorldActionimplementsAction{privateStringmessage;publicStringgetMessage(){returnmessage;}publicStringexecute()throwsException{message=HelloWo