struts-2.3.31和struts-2.5.10引入jar以及配置web.xml和struts.xml

胡扯
在struts学习过程中,很多教程用的都是strut-2.3.31,而现在最新的是struts-2.5.10,升级之后的strut2技能总是会有点变化的。还以为只要对着教程敲就行了,没想到不停地报错,简直无法让人享受敲代码的乐趣呀!


struts-2.3.31

1. 引入jar

asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
jarlist.txt
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.16.3.jar
xwork-core-2.3.16.3.jar

2. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
version="2.5">
  <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>

3. struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.devMode" value="true" />
    <!-- 所有的Action定义都应该放在package下 -->   
    <package name="crazyit" namespace="/" extends="struts-default">     
        <action name="*">
            <result>/WEB-INF/content/{1}.jsp</result>
        </action>
    </package>
</struts>

struts-2.5.10

1. 引入jar

asm-5.1.jar
asm-commons-5.1.jar
asm-tree-5.1.jar
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang3-3.4.jar
commons-logging-1.1.3.jar
freemarker-2.3.23.jar
jarlist.txt
javassist-3.20.0-GA.jar
log4j-api-2.7.jar
ognl-3.1.12.jar
struts2-core-2.5.10.jar

相对于struts-2.3.31,2.5.10版本需要导入的基本jar要少了xwork-core-2.3.16.3.jar,多了log4j-api-2.7.jar。由于xwork-core已经整合到struts-core中了,所以这里我们在下载struts-2.5.10/lib找不到xwork-core的字眼,但我们可以用解压软件打开struts-core查看内部的文件,可以发现到之前版本所没有的xwork。如果没有log4j-api-2.7.jar`,在web.xml和struts.xml配置正确的前提下,会报错如下错误:

log4j-api-2.7.jar缺少报错

2. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="starter" version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <filter>
        <filter-name>struts2</filter-name>
        <!-- 
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
         -->
         <!-- 以下路径中没有ng目录 -->
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class>

    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

细心的读者可以发现一个很大的不同是,2.5.10版本配置<filter-class>指定类文件路径中少了一个ng。是的没有错,我们只要打开struts2-core-2.5.10.jar即可发现里面不存在子目录ng。也只有通过上面的路径才能找到类StrutsPrepareAndExecuteFilter。如果没有配置正确的路径就会报以下错误:

ClassNotFoundException

3. struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <!-- 所有的Action定义都应该放在package下 -->   
    <package name="crazyit" namespace="/" extends="struts-default">     
        <action name="*">
            <result>/WEB-INF/content/{1}.jsp</result>
        </action>
    </package>
</struts>
  一、漏洞简介     Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品:Struts 1和Struts 2。     Apache Struts 2.3.5 - 2.3.31版本及2.5 - 2.5.10版本存在远程代码执行漏洞(CNNVD-201703-15 2,CVE-2017-5638)。该漏洞与Apache Struts2 (S2-045)远程代码执行漏洞原理基本相同,均是由于上传功能的异常处理函数没有正确处理用户输入的错误信息,导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令。      二、漏洞危害     攻击者可通过发送恶意构造的HTTP数据包利用该漏洞,在受影响服务器上执行系统命令,进一步可完全控制该服务器,造成拒绝服务、数据泄露、网站造篡改等影响。由于该漏洞利用无需任何前置条件(如开启dmi,debug等功能)以及启用任何插件,因此漏洞危害较为严重。     三、修复措施     目前,Apache官方已针对该漏洞发布安全公告,并且漏洞利用代码已被公布在互联网上,请受影响用户及时检查是否受该漏洞影响。另外,已通过升级方式修复了Apache Struts2 (S2-045)远程代码执行漏洞的用户,不在该漏洞影响的范围内。     【自查方式】     用户可查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar文件,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞。     【升级修复】     受影响用户可升级版本至Apache Struts 2.3.32 或 Apache Struts 2.5.10.1以消除漏洞影响。     官方公告: https://cwiki.apache.org/confluence/display/WW/S2-046 https://cwiki.apache.org/confluence/display/WW/S2-046
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值