- 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. 谢谢!