Struts2基础
来源:互联网 发布:年薪百万知乎 编辑:程序博客网 时间:2024/04/30 08:59
访问过程
参照下图所示
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);
3、接着StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy;
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是 (但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper。
原文链接http://www.cnblogs.com/o-andy-o/archive/2012/04/06/2435400.html
配置文件讲解:
Struts2框架按照如下顺序加载struts2配置
框架本身:
*default.properties
—— 该文件保存在struts2-core-2.3.7.jar 中 org.apache.struts2包里面【保存常量设置】
*struts-default.xml
——该文件保存在struts2-core-2.3.7.jar【很多基本设置,基本beans,interceptor】
struts-plugin.xml
——该文件保存在struts-xxx-2.3.7.jar
后期配置:
*struts.xml
——该文件是web应用默认的struts配置文件【推荐关于struts2的配置都在此处】
struts.properties
——该文件是Struts的默认配置文件【不建议修改此文件】
*web.xml
——该文件是Web应用的配置文件【一般只配置StrutsPrepareAndExecuteFilter】
struts.xml中的相关配置
<constant name="struts.devMode" value="true" /><package name="p1" extends="struts-default" namespace = "/"> <action name="hello" class =""> <result name = "success" type = "dispatcher">/success.jsp</result> </action></package>
package name 包名,尽量唯一
struts-default是struts-default.xml定义的一个package,内含大量拦截器和结果集。该包是abstract(指的是包中没有任何action,就是抽象包)。
继承了struts-default的包就继承了它的所有内部定义。
namespace属性
Action的访问路径 = 包名称空间 namespace + Action name属性
namespace默认值 “”
*Action名称搜索顺序:
获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
- 首先寻找namespace为/path1/path2/path3的package,
如果存在这个package,则在这个package中寻找名字为test的action【若不存在test action方法,转向最后一步】,如果不存在这个package则转下一步骤; - 寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action【若不存在test action方法,转向最后一步】,如果不存在这个package,则转下一步骤;
- 寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action【若不存在action方法,转向最后一步】,如果仍然不存在这个package,转向最后一步。
- 去默认的namaspace的package下面去找名字为test的action(默认的命名空间为空字符串“/”),如果还是找不到,页面提示找不到action。
Action name : 动作名称,一个包内的action名称必须唯一。
class: 动作类的全名,可选的,默认的是ActionSupport类
method: 动作类中的动作方法。可选的,默认是execute()方法
常量的配置(从default.properties中找)
指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和freemarker 、velocity的输出
<constant name="struts.i18n.encoding" value="UTF-8"/>
该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。
如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开
<constant name="struts.action.extension"value="action"/>
设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
<constant name="struts.serve.static.browserCache" value="false"/>
当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
<constant name="struts.configuration.xml.reload" value="true"/>
开发模式下使用,这样可以打印出更详细的错误信息
<constant name="struts.devMode" value="true" />
默认的视图主题
<constant name="struts.ui.theme" value="simple" />
与spring集成时,指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring" />
该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为 false
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
上传文件的大小限制
<constant name="struts.multipart.maxSize" value=“10701096"/>
include标签
不必全部写在一个配置文件中,可以将各个不同模块的配置包含进来,提高扩展性
<include file= "case.xml"></include>
- struts2基础
- Struts2基础
- struts2基础
- struts2基础
- Struts2 基础
- struts2基础
- struts2基础
- Struts2基础
- Struts2基础
- Struts2基础
- struts2--基础
- Struts2基础
- struts2基础
- Struts2基础
- Struts2基础
- Struts2基础
- Struts2 基础
- Struts2基础
- LeetCode Insert Interval
- 一根网线发起的攻击
- 最短的崩溃程序(C语言版)
- 一对一,多对多映射配置
- Java 装饰模式 (Decorator)
- Struts2基础
- 计算机是如何启动的?
- 个性化配置--Linux Terminal终端
- HTML5学习笔记--Form
- BZOJ-1857-传送带-SCOI2010
- easyui添加自定义图标
- 一款基于jquery带百分比的响应式进度加载条
- c#---类和结构
- 大骆驼第一章 perl概述