天天看點

Struts2學習(一):建立一個Struts2應用

Struts1.*都還沒有怎麼玩,Struts2的時代就已經來臨了,在網上查了很多資料,結果顯示Struts2和Struts1相關性不高,即使沒有用過Struts1,也可以直接使用Struts2架構,實際上Struts2可以說是WebWork的翻版。于是俺就在網上down了一個Struts2中文文檔,是一個網友自己做的chm檔案,他的blog位址是http://www.blogjava.net/max/,^_^。

下面簡單說下我的實踐經曆吧,我用的開發工具是MyEclipse_5.5.1。首先當然是去Apache上下一個Struts的釋出包咯,然後建立一個Web工程,我的工程名字叫Struts,這個過程在Max的教程上都有詳細的描述,接下來的三個步驟就比較重要了:

1. 配置web.xml檔案

我的web.xml檔案内如如下,

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "web-app_2_3.dtd" >

<web-app>

<filter>

       <filter-name>Struts2</filter-name>

       <filter-class>

org.apache.struts2.dispatcher.FilterDispatcher

</filter-class>

    </filter>

    <filter-mapping>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <welcome-file-list>

        <welcome-file>index.html</welcome-file>

    </welcome-file-list>

</web-app>

紅色突出顯示的部分是使用Struts2的關鍵,它表明所有的請求都将交給FilterDispatcher這個控制器來進行“分流”,這個原理和Struts1中的一樣,隻不過Struts1中使用的servlet映射而不是filter映射,至于servlet和filter是如何對url進行映射的請參考這篇文章http://blog.csdn.net/delez/archive/2007/05/05/1596936.aspx。

2.Struts.xml

這個檔案的作用就和Struts1中的Struts-config.xml檔案的作用一樣了,我們對所請求的url進行映射時都需要這個檔案的幫助,它裡面詳細指定了一個路徑經過映射後進入哪個action裡面去。我的Struts.xml檔案的内容如下:

<!DOCTYPE struts PUBLIC   

     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   

     "http://struts.apache.org/dtds/struts-2.0.dtd">  

<struts>

</struts>  

因為我目前還沒有配置任何action,是以我的struts.xml檔案的内容是空的。

3.把Struts釋出包中lib目錄下的jar檔案全部都拷貝到web工程的WEB-INF/lib目錄下面去;

現在我們啟動Tomcat,,這個時候如果不出意外的話Tomcat啟動會報如下的錯誤:

unable to load bean: type:com.opensymphony.xwork2.ObjectFactory

class:org.apache.struts2.spring.StrutsSpringObjectFactory - bean - jar:file:/E:/workspace/Struts/WEB-INF/lib/struts2-spring-plugin-2.0.8.jar!/struts-plugin.xml:8:132。

很莫名奇妙的一個錯誤,因為我根本沒有使用Spring啊!我後來嘗試放了一個spring.jar到WEB-INF/lib下面去,上面的錯誤雖然沒有了但是又出現了一個新的錯誤,并且還提示我在web.xml中加上這句:

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

繼續閱讀