1. 程式人生 > >struts-2.3.34和struts-2.5.16引入jar以及配置web.xml和struts.xml

struts-2.3.34和struts-2.5.16引入jar以及配置web.xml和struts.xml

struts-2.3.34

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.16

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.16.jar

    相對於struts-2.3.34,2.5.16版本需要匯入的基本jar要少了xwork-core-2.3.34.jar,多了log4j-api-2.7.jar。由於xwork-core已經整合到struts-core中了,所以這裡我們在下載struts-2.5.16/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.16版本配置<filter-class>指定類檔案路徑中少了一個ng。是的沒有錯,我們只要開啟struts2-core-2.5.16.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>