• 1. 第一章:认识体验Struts 2 主讲:刘雷
  • 2. Struts2已经推出了稳定的版本,其先进的架构和设计思想,随着时间的推移,相信会有越来越多的人开始使用struts2原有的人气,加上采用了WebWork的设计架构,Struts2必将成为最为流行的Web开发框架之一。 下载并安装Struts2 感受Struts2的开发流程
  • 3. 什么是Web框架
  • 4. 模型1与模型2
  • 5. 模型1架构
  • 6. 模型2
  • 7. (本页无文本内容)
  • 8. 模型2架构
  • 9. 模型1与模型2的选择
  • 10. 从struts1到struts2WebWork是由OpenSymphony组织(www.opensymphony.com)开发的基 于MVC架构模式的J2EE Web框架。 Tapestry是一个开源的基于组件的Web应用开发框架,它使用组件对象模 型来创建动态的,交互的Web应用。 Spring MVC Web框架是整个Spring集成框架的一部分。
  • 11. Struts1的缺点Struts1存在的缺点主要有二个: 令人头痛的ActionForm 单元测试困难
  • 12. (本页无文本内容)
  • 13. (本页无文本内容)
  • 14. Struts2的诞生
  • 15. 总结Struts 2框架由WebWork和Struts1框架发展而来 准备开发环境 安装JDK 安装Tomcat 安装MyEclipse 安装数据库MySql或Oracle
  • 16. 下载并安装Struts2一:下载和安装struts2 要使用struts2,首先要从Apache SoftwareFoundation的网站上下载Struts2的开发包。 Struts2的下载地址如下: http://struts.apache.org/download.cgi 下载完成后,需要注意的是Struts2和WebWork2一样,都是构建在XWork框架基础之上,而XWork仍然是由opensymphony组织负责开发和维护的, 所以你想完整地学习和研究Struts2,还需要获取XWork的源代码。在Struts2的完整下载版中,只包含了Struts2的源代码和XWork的类库,没有包含XWork的源代码。 XWork的下载地址是:http://www.opensymphony.com/xwork/download.action 如果你下载它的完整版本,其中就包含了XWork的源代码。
  • 17. Struts2的下载和安装下载和安装Struts2.0请按以下步骤进行: 登录http://struts.apache.org/download.cgi站点,下载struts2的最新版。下载时有如下几个选项: Full Distribution的完整版,通常建议下载该选项,该选项包括struts2的示例应用,空示例应用,核心库,源代码和文档等 Example Applications: 仅下载struts2的空示例应用,这些示例对学习struts2有很大的帮助,下载struts2的完整版已经包含了该项的全部应用。 Blank Application only: 仅下载struts2的空示例应用,这个空应用研究已经包含在Example Applications选项下。 Essential Dependencies Only:仅下载struts2的核心库,下载struts2的完整版时将包括该项的全部内容。 Documentation: 仅下载struts2的相关文档,包含struts2的使用文档、参考手册和API文档等。下载struts2的完整版时将包括该项的全部内容。 Source:下载struts2的全部源代码。 Alternative Java 4 JARs: 下载可选的JDK1.4支持的JAR包。
  • 18. Struts完整版的文件结构apps:该文件夹下包含了基于struts2的示例应用。 docs:该文件夹下包含了struts2的相关文档,包括struts2的快速入门,struts2的文档以及API文档等内容。 lib:该文件夹下包含了struts2框架的核心类库,以及struts2的第三方插件类库。 src:该文件夹下包含了struts2框架的全部源代码。 开发struts2工程需要的基本JAR包: struts2-core-2.0.11.jar xwork-2.0.4.jar ognl-2.6.11.jar freemarker-2.3.8.jar commons-logging-1.0.4.jar
  • 19. Struts2在web.xml中的配置<!-- 定义struts2的FilterDispatcher的Filter -- > <filter> <!--定义核心Filter的名字 -- > <filter-name>struts2</filter-name> <!-- 定义核心Filter的实现类 -- > <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <!-- FilterDispatcher的Filter 用来初始化struts2并且处理所有请求-- > <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  • 20. Struts2开发总体步骤一:准备类库:不同的开发需求所用的类库是不一样的,但至少需要如下的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与结果页面关联起来。
  • 21. HelloWorld程序由于”HelloWorld”程序名扬四海,“程序中人”无人不知,无人不晓,我等书写之人亦不能免俗。首先给出一个使用struts2框架开发的”HelloWorld” Web程序。 步骤一:新建Web项目取名helloworld 步骤二:导入struts 2类库---------包位于struts2安装目录的lib目录下。 struts2-core-2.0.11.jar-------struts2框架的核心类库 xwork-2.0.4.jar------XWork类库,Struts2在其上构建 ognl-2.6.11.jar-------对象图像导航语言(Object Graph Navigation Language),Struts2框 架使用的一种表达式语言 freemarker-2.3.8--------Struts2的UI标签的模板使用FreeMarker编写 commons-logging-1.0.4.jar------ASF出品的日志包,Struts2框架使用这个日志名来Log4j和JDK1.4+的日志记录
  • 22. HelloWorld程序步骤三:在web.xml文件中配置FilterDispatcher struts2框架是基于MVC模式开发的,它提供了一个核心控制器,用于所有的请求进行统一处理,这个控制器是由一个名为FilterDispatcher的servlet过滤器来充当的。 你需要在web.xml文件中配置FilterDispatcher过滤器,指定映射到FilterDispatcher的URL样式,匹配这个URL样式的所有请求,都将被Web容器交由FilterDispatcher进行处理。 编辑WebRoot\WEB-INF\web.xml文件,添加FilterDispatcher过滤器的配置,web.xml的完整代码如下:
  • 23. HelloWorld程序步骤四:编写Action类 一个action就是一段只有特定的URL被请求时才会执行的代码。FilterDispatcher根据请求URL的不同,来执行对应的action。在Struts2中,action执行的结果(成功或者失败)通常都对应着一个要呈现给用户的result,这个result可以是HTML页面,也可以是一个PDF文件,或者Excel电子表格。所有的result都是通过字符串名字来标识的,FilterDispatcher根据action返回的结果字符串来选择对应的result显示给用户。Action与其对应的result是在一个名为struts.xml的配置文件中进行配置的。 在struts2中,可以用一个普通的Java类作为Action类,只要这个类提供如下的方法[实现即可: public String execute();
  • 24. HelloWorld程序
  • 25. HelloWorld程序在struts2中,所有的action必须返回一个字符串类型的结果代码,以标识要呈现给用户的result. Action接口中定义的定义的常量字符串,从语义上为你定义好了在action执行的不同情况下应该向用户呈现的result的名字,当然你可以为result的名字,当然你可以为result取其它的名字,不过这种行为是不建议的,除非上述定义的字符常量不能满足你的应用需求。 下面我们编写一个Action类HelloWorldAction,实现com.opensymphony.xwork2.Action接口。 建包com.ibm.action、建类HelloWorldAction,实现com.opensymphony.xwork2.Action接口。 public class HelloWorldAction implements Action { private String message; public String getMessage() { return message; } public String execute() throws Exception { message = "Hello World"; return SUCCESS; } }
  • 26. HelloWorld程序在HelloWorldAction类中,我们定义一个字符串类型的message实例变量,并给出了一个JavaBean风格的getter方法-----getMessage(),用于获取message字段的内容。在excute()方法中,我们构造了一个问候语“Hello World!”,保存到message字段中,最后返回SUCCESS静态常量(在Action接口中定义) Action返回的结果代码不一定非要对应一个要执行的result,例如Action.NONE结果代码就没有对应任何的result.
  • 27. HelloWorld程序步骤六: 在src目录下新建struts.xml文件,内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default"> <action name="HelloWorld" class="com.ibm.action.HelloWorldAction"> <result name="success">/HelloWorld.jsp</result> </action> </package> </struts>
  • 28. HelloWorld程序步骤七:编写HelloWord.jsp页面内容 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>欢迎页面</title> </head> <body> <s:property value="message" /><br> </body> </html>
  • 29. 谢谢!