Struts 2.3.31 配置说明

  1. 复制文件到站点的 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>

  2. struts.xml 配置说明
    • 文件路径位于Web项目的src目录中,运行时必须在Web项目的 WEB-INF/classes 中,在编译过程中 eclipse 会将 src目录中的 struts.xml 复制到 WEB-INF/classes 中,以下是 struts.xml 配置文件的 DTD 和根节点
  3. <?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 级别的逻辑视图
    1. 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
    2. 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
    3. Config-browser插件,该插件可以查看站点的常量配置、Beans、Jars、名字空间和 actions等信息,插件安装后,可以访问站点的 /config-browser/actionNames.action
时间: 2024-10-26 13:05:44

Struts 2.3.31 配置说明的相关文章

笔记: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 fre

struts2配置文件的加载顺序以及 struts.xml package 的配置说明

查看StrutsPrepareAndExecuteFilter:(核心过滤器)两个功能 :预处理 和 执行 在预处理功能中 init 方法中会有加载配置文件的代码: dispatcher.init(); init_DefaultProperties(); // [1]                  ---- 加载org.apache.struts.default.properties.配置的是struts2的所有常量. init_TraditionalXmlConfigurations();

Struts从2.1升级到2.3版本过程

应客户要求将版本升级到安全版本. http://struts.apache.org/download   官网下载地址. http://struts.apache.org/[preferred]struts/2.3.31/struts-2.3.31-all.zip  (2.3.31版本) 我将我更新的jar包贴出来 大家可以参考下,如果有,那么升级,没有的话导入一份: 根据项目需求来整理 我目前用到的jar: commons-lang3-3.2.jar commons-logging-1.1.3

玩转SSH(四):Struts + Spring + MyBatis

一.创建 SSMDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-webapp 模版创建. 输入对应的项目坐标GroupId 和 ArtifactId. 之后在项目名称中填入项目名称,这里我填的 ProjectName 和上文的 ArtifactId 相同,都是 SSMDemo. 点击确定后,等待 Maven 帮我们构建好项目的目录结构.当控制台显示 BUILD SUCCESS 就表示初始化完成了. 初始化完成后

创建一个struts2的HelloWorld

1.下载struts2的jar包 http://struts.apache.org/download.cgi#struts255 下载一个稳定版本Struts 2.3.31 里面提供了maven jar <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.31</version&g

【高危】Strurs2又现高危漏洞(附Poc&Exp)

话说今天早上,一个名为str2-045的漏洞成了大家的讨论焦点,那么这个str2-045到底是个什么鬼? 这个漏洞的全名啊,叫做:基于 Jakarta plugin插件的Struts远程代码执行漏洞.根据官方评价,这个漏洞属于高危漏洞,他的漏洞编号是:CVE-2017-5638 那这个漏洞到底是怎么一回事呢? 恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令. 这个漏洞的利用,是有条件滴!这个漏洞需要通过Jakarta 文件上传插件实现远程

struts2远程命令执行漏洞S2-045

Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵,漏洞评级为:高危. 漏洞详情:恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令. 风险等级:高风险. 漏洞风险:黑客通过利用漏洞可以实现远程命令执行. 影响版本:Struts 2.3.5 - Struts 2.3.31, Struts 2

漏洞预警 | Apache Struts2 曝任意代码执行漏洞 (S2-045)

近日,Apache官方发布Apache Struts 2.3.5–2.3.31版本及2.5–2.5.10版本存在远程代码执行漏洞(CNNVD-201703-152 ,CVE-2017-5638)的紧急漏洞公告.该漏洞是由于上传功能的异常处理函数没有正确处理用户输入的错误信息,导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令. 漏洞危害 攻击者可在HTTP请求头部中的Content-Type字段构造恶意代码利用该漏洞,在受影响服务器上执行系统命令,进一步可完全控制该服务

&#8203;如何快速利用s02-45漏洞获取服务器权限

byantian365.com simeon 1.1CVE-2017-5638漏洞简介 Apache Struts 2是世界上最流行的JavaWeb服务器框架之一.然而在Struts 2上发现存在高危安全漏洞(CVE-2017-5638,S02-45),该漏洞影响到:Struts 2.3.5 - Struts 2.3.31,Struts 2.5 - Struts2.5.10 漏洞编号:CVE-2017-5638 漏洞等级:HIGH 漏洞名称:S2-045:Struts 2远程执行代码漏洞 漏洞影