标签:struts 2 框架概述 mvc 处理流程 struts执行流程
Struts2 =Struts1 + WebWork struts1和struts2没有本质的关系
Struts封装好的一些功能:
对页面导航活动进行管理
对来自用户的输入数据进行合法性验证
统一的布局
可扩展性
国际化和本地化
支持Ajax
表单的重复提交
Struts中,用action取代了servlet。
在Struts2API中,com包为webwork的,org开头的为struts1的。
Struts2下载:http://struts.apache.org下载struts-2.x.x-all.zip
Struts2解压app目录中struts2-blank-2.1.8.1.war查看struts项目的最小引入jar包
struts2-core-2.1.8.1.jar Struts2框架的核心类库
xwork-core-2.1.6.jar XWork类库,Struts 2在其上构建
ognl-2.7.3.jar (ObjectGraph Navigation Language), 通过其读写对象的属性
freemarker-2.3.15.jar : Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar ASF出品的日志包,Struts2框架使用这个日志
commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后需要加入此文件
commons-io-1.3.2.jar 上传文件依赖的jar包
struts在web项目中的地位
软件中的框架:是一种半成品;项目的开发需要在框架的基础上进行。
项目中使用什么样的框架,应该根据软件的需求和规模来决定。
在软件开发中,必须要同时使用到的框架的版本。
Tomcat启动时的加载项
Tomcat启动à加载自身的web.xml文件à加载所有项目的web.xml文件
在项目的web.xml文件中引入过滤器,加载和初始化框架。
Struts的核心功能的初始化,是通过过滤器完成的。
Servlet的初始化在第一次访问时完成
Filter的初始化在服务器启动时完成。doFilter()方法在访问的时候执行。
<!--引入Struts2核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<!-- Struts2核心过滤器 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<!—配置Struts2核心过滤器的拦截项-->
<url-pattern>/*</url-pattern>
</filter-mapping>
Struts的版本不同,核心过滤器类是不一样的。
struts的核心功能是通过过滤器完成的。
在struts中,action类,也叫动作类一般继承ActionSupport类
主要用来处理具体的请求和业务逻辑 struts中的action类取代了servlet类。Action中的业务逻辑方法用来处理具体的请求,业务逻辑方法必须返回一个String类型的结果,方法不能有参数。
Action类的实例在调用service方法之后创建。每访问一次,就创建一个实例。
服务器启动:
1.加载项目web.xml
2.创建Struts核心过滤器对象,执行filterà init()
struts-default.xml, 核心功能的初始化
struts-plugin.xml, struts相关插件
struts.xml 用户编写的配置文件
访问:
3.用户访问Action,服务器根据访问路径名称,找对应的aciton配置, 创建action对象
4.执行默认拦截器栈中定义的18个拦截器
5.执行action的业务处理方法
拦截器只拦截action,过滤器可以在所有的web项目中使用。Struts每一个核心功能都是一个拦截器,一个拦截器就是一个Java类。
struts-default.xml,详解
目录:struts2-core-2.3.4.1.jar/struts-default.xml
内容:
1.bean节点指定struts在运行的时候创建的对象类型
2.指定struts-default包 【用户写的package(struts.xml)一样要继承此包 】
package struts-default 包中定义了:
a. 跳转的结果类型
dispatcher 转发,不指定默认为转发
redirect 重定向
redirectAction 重定向到action资源
stream (文件下载的时候用)
b. 定义了所有的拦截器
定义了32个拦截器!
为了拦截器引用方便,可以通过定义栈的方式引用拦截器,
此时如果引用了栈,栈中的拦截器都会被引用!
defaultStack
默认的栈,其中定义默认要执行的18个拦截器!
c. 默认执行的拦截器栈、默认执行的action
<default-interceptor-refname="defaultStack"/>
<default-class-refclass="com.opensymphony.xwork2.ActionSupport" />
<interceptor
name="prepare"class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
<interceptor
name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
struts会把从页面获取的数据自动封装起来,前提是属性名和页面中标签的name属性的值是一样的。
通过对象获取页面中的属性时,在页面中对应标签的name的值中使用 对象.属性 作为标签中name属性的值。 必须为该对象提供set()与get()方法。
标签:struts 2 框架概述 mvc 处理流程 struts执行流程
原文地址:http://blog.csdn.net/ning_xian_hong/article/details/45640057