首页 > 代码库 > 笔记:Struts 2.3.31 配置说明

笔记:Struts 2.3.31 配置说明

  • 复制文件到站点的 WEB-INF\lib 目录,文件列表如下,黄色突出显示的是必须加入的核心包
    • struts2-core-2.3.31.jarstruts2 的核心库
    • xwork-core-2.3.31.jar:由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类
    • javassist-3.11.0.ga.jar:代码生成工具Hibernate用它在运行时扩展java类和实现,同cglib
    • ognl-3.0.19.jarOGNL表达式语言,struts2支持该EL
    • freemarker-2.3.22.jar:是一个模板引擎,一个基于模板生成文本输出的通用工具
    • commons-io-2.2.jarIO工具类封装
    • commons-fileupload-1.3.2.jarstruts的上传下载
    • commons-logging-1.1.3.jarstruts 的日志

      ??

    • struts2-convention-plugin-2.3.31.jarconvention 插件,支持 action 的约定映射,依赖(asm-3.3.jarasm-commons-3.3.jarasm-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.jarJSON插件
  • 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 节点,导入其他配置文件,通过这种方式可以将 struts2Action按照模块配置在多个配置文件中,其配置文件格式与 struts.xml 一致,配置示例

      <include file=""/>

    • package 节点,用于定义包配置,每个package元素定义了一个包配置,有如下属性
      • name 用于定义包配置,每个package元素定义了一个包配置,必须属性
      • extends:指定该包继承其他包。继承其他包,可以继承其他包中的Action定义、拦截器定义等
      • namespace:指定该包的名字空间,将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突,例如每一个package都可以有自己独立的MenuHelp action,但是事项方式各有不同
      • abstract:指定包是否为抽象包,为抽象包则不能有 action 的定义
      • 注意:package里元素必须按照一定的顺序排列 result-typesinterceptorsdefault-interceptor-refdefault-action-refdefault-class-refglobal-resultsglobal-exception-mappingsaction
    • action 节点,用于配置处理请求,完成用户请求和action之间的对应关系,归属 package 节点,有如下属性
      • name:定义action的名称,也是指定了该action所处理的请求url,支持模式匹配,使用 * 表示一个或者多个任意字符class:指定了该action的处理实现类,默认值 ActionSuppert
      • method:指定了具体实现类的处理方法,默认值 execute,使用{N} 来获取匹配的值
      • result 子节点,对于 action 的返回映射具体表现层页面,其 InnerXML 表示的是具体的页面的URL地址,并支持使用{N} 来获取匹配的值属性如下
        • nameaction 的返回字符串 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 节点,属性如下
      • nameaction 名称
    • default-class-ref 节点,用于配置默认的处理类,如果 action 没有配置 class 则会使用配置的默认处理类,归属 package 节点,属性如下
      • class:处理类的完整名称
    • global-results 节点,用于配置全局结果,全局结果将对所有action生效,归属 package 节点
      • result 子节点,对于 action 的返回映射具体表现层页面,其 InnerXML 表示的是具体的页面的URL地址,并支持使用{N} 来获取匹配的值属性如下
        • nameaction 的返回字符串 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级别,属性如下:
        • exceptionjava 的异常类型
        • 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-dataMIME类型(文件上传)请求的框架,该属性支持cospelljakarta等属性值,即分别对应使用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,默认映射器根据请求的前缀与Actionname属性完成映射
    • 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,对于WebLogicOrionOC4J服务器,通常应该设置该属性为true
    • struts.ui.theme=xhtml,该属性设置设置struts2标签的主题,默认值 xhtml,有效值 xhtml,html,simple
  • Convention 插件,该插件用于支持零配置,插件完全可以抛弃配置信息,Struts2根据约定来自动配置 action result,插件会自动搜索 actionactionsstrutsstruts2包下面的所有 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插件,该插件可以查看站点的常量配置、BeansJars、名字空间和 actions等信息,插件安装后,可以访问站点的 /config-browser/actionNames.action

    ??

    ??

    ??

    ??

笔记:Struts 2.3.31 配置说明