笔记:Struts 2.3.31 配置说明
- 复制文件到站点的 WEB-INF\lib 目录,文件列表如下,黄色突出显示的是必须加入的核心包
- struts2-core-2.3.31.jar:struts2 的核心库
- xwork-core-2.3.31.jar:由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类
- javassist-3.11.0.ga.jar:代码生成工具Hibernate用它在运行时扩展java类和实现,同cglib包
- ognl-3.0.19.jar:OGNL表达式语言,struts2支持该EL
- freemarker-2.3.22.jar:是一个模板引擎,一个基于模板生成文本输出的通用工具
- commons-io-2.2.jar:IO工具类封装
- commons-fileupload-1.3.2.jar:struts的上传下载
- commons-logging-1.1.3.jar:struts 的日志
- struts2-convention-plugin-2.3.31.jar:convention 插件,支持 action 的约定映射,依赖(asm-3.3.jar、asm-commons-3.3.jar、asm-tree-3.3.jar)
- asm-3.3.jar:小巧轻便的Java字节码操控框架
- asm-commons-3.3.jar:小巧轻便的Java字节码操控框架
- asm-tree-3.3.jar:小巧轻便的Java字节码操控框架
- struts2-config-browser-plugin-2.3.31:这个插件可以清楚的看出struts2应用下部署的 action以及action详细的映射信息
- Struts2-json-plugin-2.3.16.3.jar:JSON插件
- web.xml 配置增加 struts 的 Filter
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Struts 2 Web Application</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- struts.xml 配置说明
- 文件路径位于Web项目的src目录中,运行时必须在Web项目的 WEB-INF/classes 中,在编译过程中 eclipse 会将 src目录中的 struts.xml 复制到 WEB-INF/classes 中,以下是 struts.xml 配置文件的 DTD 和根节点
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!--struts 其他配置节点-->
</struts>
- constant 节点,是配置常量值,具体的常量值请参考 struts.properties,此处配置优先级低于 web.xml 中配置,配置示例
<constant name="" value=""/>
- Include 节点,导入其他配置文件,通过这种方式可以将 struts2的Action按照模块配置在多个配置文件中,其配置文件格式与 struts.xml 一致,配置示例
<include file=""/>
- package 节点,用于定义包配置,每个package元素定义了一个包配置,有如下属性
- name: 用于定义包配置,每个package元素定义了一个包配置,必须属性
- extends:指定该包继承其他包。继承其他包,可以继承其他包中的Action定义、拦截器定义等
- namespace:指定该包的名字空间,将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突,例如每一个package都可以有自己独立的Menu和Help action,但是事项方式各有不同
- abstract:指定包是否为抽象包,为抽象包则不能有 action 的定义
- 注意:package里元素必须按照一定的顺序排列 result-types、interceptors、default-interceptor-ref、default-action-ref、default-class-ref、global-results、global-exception-mappings、action
- action 节点,用于配置处理请求,完成用户请求和action之间的对应关系,归属 package 节点,有如下属性
- name:定义action的名称,也是指定了该action所处理的请求url,支持模式匹配,使用 * 表示一个或者多个任意字符class:指定了该action的处理实现类,默认值 ActionSuppert 类
- method:指定了具体实现类的处理方法,默认值 execute,使用{N} 来获取匹配的值
- result 子节点,对于 action 的返回映射具体表现层页面,其 InnerXML 表示的是具体的页面的URL地址,并支持使用{N} 来获取匹配的值属性如下
- name:action 的返回字符串 success\error\input\none 等
- type:该属性指定结果类型,默认值 dispatcher (JSP整合结果类型)、chain (action 链式处理的结果类型)、redirect(直接跳转到其他URL的结果类型)、redirectAction(直接跳转到其他的Action结果类型)、stream(返回一个InputStream的结果类型),其他的结果类型可以查看 struts-default.xml 配置文件的 result-types 节点
- default-action-ref 节点,用于配置默认的 action ,当用户请求找不到对应的 action 时,系统系统默认的 action 来处理请求,归属 package 节点,属性如下
- name:action 名称
- default-class-ref 节点,用于配置默认的处理类,如果 action 没有配置 class 则会使用配置的默认处理类,归属 package 节点,属性如下
- class:处理类的完整名称
- global-results 节点,用于配置全局结果,全局结果将对所有action生效,归属 package 节点
- result 子节点,对于 action 的返回映射具体表现层页面,其 InnerXML 表示的是具体的页面的URL地址,并支持使用{N} 来获取匹配的值属性如下
- name:action 的返回字符串 success\error\input\none 等
- type:该属性指定结果类型,默认值 dispatcher (JSP整合结果类型)、chain (action 链式处理的结果类型)、redirect(直接跳转到其他URL的结果类型)、redirectAction(直接跳转到其他的Action结果类型)、stream(返回一个InputStream的结果类型),其他的结果类型可以查看 struts-default.xml 配置文件的 result-types 节点
- global-exception-mappings 节点,用于配置全局异常映射配置,归属 package 节点,子节点如下:
- exception-mapping 子节点,用于配置指定的 异常 信息和逻辑视图,归属 global-exception-mappings 或者 action 主要区别是全局还是 action级别,属性如下:
- exception:java 的异常类型
- result:逻辑视图的名称,全局的异常映射配置,只能使用 global-results 的全局逻辑视图,action 级别的异常配置可以使用 全局逻辑视图和 action 级别的逻辑视图
- struts.properties 配置说明
- 文件路径位于Web项目的src目录中,运行时必须在Web项目的 WEB-INF/classes 中,在编译过程中 eclipse 会将 src目录中的 struts.xml 复制到 WEB-INF/classes 中
- struts.locale=en_US,指定的Web应用的默认区域,默认值 en_US
- struts.i18n.encoding=UTF-8,指定的Web应用的默认编码集,默认值 UTF-8
- struts.objectFactory = spring,指定 Struts 2默认的ObjectFactory Bean,默认值 spring
- struts.objectFactory.spring.autoWire = name,指定 Spring框架的自动装配模式,默认值 name
- struts.objectFactory.spring.useClassCache = true,该属性指定整合Spring框架时,是否缓存Bean实例,默认值 true
- struts.multipart.parser=jakarta,该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos、pell和jakarta等属性值,即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。默认值 jakarta
- struts.multipart.saveDir=,该属性指定上传文件的临时保存路径,该属性的默认值是 javax.servlet.context.tempdir
- struts.multipart.maxSize=2097152,该属性指定Struts 2文件上传中整个请求内容允许的最大字节数
- struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper,指定将HTTP请求映射到指定Action的映射器,Struts 2提供了默认的映射器:org.apache.struts2.dispatcher.mapper.DefaultActionMapper,默认映射器根据请求的前缀与Action的name属性完成映射
- struts.action.extension=action,该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理,如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。
- struts.serve.static.browserCache=true,该属性设置浏览器是否缓存静态内容,默认值 true
- struts.devMode = false,该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示,默认值 false
- struts.i18n.reload=false,该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件,默认值 false
- struts.configuration.xml.reload=false,当struts.xml文件改变后,系统是否自动重新加载该文件,默认值 false。
- struts.dispatcher.parametersWorkaround = false,对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,默认值 false,对于WebLogic、Orion和OC4J服务器,通常应该设置该属性为true
- struts.ui.theme=xhtml,该属性设置设置struts2标签的主题,默认值 xhtml,有效值 xhtml,html,simple
- Convention 插件,该插件用于支持零配置,插件完全可以抛弃配置信息,Struts2根据约定来自动配置 action 和 result,插件会自动搜索 action、actions、struts、struts2包下面的所有 Java 类,会把所有实现了 com.opensymphony.xwork2.Action 的类和所有以 action 结尾的 Java类,插件的常量配置:
- struts.convention.exclude.packages:指定不扫描哪些包下的 Java 类,位于这些包结构下的 Java 类将不会被自动映射成 action。
- struts.convention.package.locators:设置插件搜索action的根包,对于 action.lee.LoginAction 类,按照约定应该映射到 /lee/login,如果设置该常量为 lee,则该 action 将会映射到 /login,默认值 action,actions,struts,struts2
- struts.convention.result.path:设置插件访问物理视图的路径,默认值 /WEB-INF/content/,定位资源的约定是:actionName+resultCode+suffix,当某个逻辑视图找不到对应的视图的资源时,会继续试图使用:actionName+suffix作为物理视图资源
- struts.convention.classes.reload:设置插件自动重新加载,默认值 false
- struts.convention.default.parent.package:设置插件映射的 action 的所在包的默认父包,默认值 convention-default
- Config-browser插件,该插件可以查看站点的常量配置、Beans、Jars、名字空间和 actions等信息,插件安装后,可以访问站点的 /config-browser/actionNames.action