struts wen ti 1

          Posted on 2006-12-04 01:21 笨蛋啊帆 閱讀(187) 評論(0)  編輯  收藏



          一、Win2k + JDK1.4 + Apache Tomcat 4.1.27 + jakarta-struts-1.1 環(huán)境

          本例新建struts項目應(yīng)用的存放路徑為:TOMCAT_HOME\webapps\ROOT\StrutsWeb 。
          (TOMCAT_HOME是Apache Tomcat 4.1.27在服務(wù)器的安裝路徑,根據(jù)具體情況而有所不同,StrutsWeb即是一個struts項目應(yīng)用的保存路徑)


          1.訪問JSP頁面:http://127.0.0.1:8080/StrutsWeb/index.jsp ,出現(xiàn)類似下面的錯誤提示:

          ? “org.apache.jasper.JasperException: File "/WEB-INF/struts-bean.tld" not found”
          ? “org.apache.jasper.JasperException: File "/WEB-INF/struts-html.tld" not found”

          解決辦法:

          *1*.

          先檢查struts應(yīng)用的標簽文件的配置情況,對應(yīng)\jakarta-struts-1.1\lib\中的*.tld文件,看看\StrutsWeb\WEB-INF\中的*.tld文件是否完整。
          如果不全,則需要從\jakarta-struts-1.1\lib\中,把全部*.tld文件copy至\StrutsWeb\WEB-INF\中。
          然后重新啟動Apache Tomcat,看看效果如何。
          *.tld是標簽庫描述器文件,它們描述了多個struts標記庫中的自定義標簽。
          ? ?
          *2*.

          如果確認struts項目的標簽文件配置無誤,那么,在一般情況下,是需要把struts項目的這個WEB應(yīng)用在Tomcat的服務(wù)應(yīng)用中單獨描述出來,
          即需修改TOMAT_HOME\conf\server.xml文件,在server.xml中找到如下行:

          ? <!-- Tomcat Root Context -->
          ? <!--
          ? ? ? <Context path="" docBase="ROOT" debug="0"/>
          ? -->

          然后在其下面加上這句:

          ? <Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

          保存server.xml,然后重新啟動Apache Tomcat,這樣就可以訪問這個WEB應(yīng)用了。

          即可這樣訪問:http://127.0.0.1:8080/mystruts/
          ? ? ? ? ? ?或 http://127.0.0.1:8080/mystruts/index.jsp。

          注意:“TOMCAT_HOME”的具體含義如前所述,是根據(jù)本機的情況而定的。



          2.訪問JSP頁面:http://127.0.0.1:8080/mystruts/index.jsp ,出現(xiàn)如下的錯誤提示:
          ? ?
          ? “org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection”

          解決辦法:

          *1*

          對應(yīng)\jakarta-struts-1.1\lib\中的*.jar文件(struts1.1共有10個*.jar文件),看看\StrutsWeb\WEB-INF\lib\中的*.jar文件是否完整。
          如果在\StrutsWeb\WEB-INF\lib\中只有一個struts.jar,那么將其他的*.jar文件也copy到\StrutsWeb\WEB-INF\lib\中。
          然后重新啟動Apache Tomcat即可訪問。
          struts.jar是一個重要的文件,它包含了struts中的所有Java類。

          *2*

          如果經(jīng)過上面的一步還沒有搞定,那么請耐心的檢查或修改\StrutsWeb\WEB-INF\中的struts-config.xml配置文件。
          看看struts配置情況是否寫錯,action-mappings的配置是否寫錯。
          一定要注意區(qū)分字母的大小寫。
          請再檢查一遍。
          然后請再檢查一遍。
          不要煩躁,一定要像對待初戀情人一樣對待它,不然會死的很難堪!
          一定要好好檢查。
          這個MVC中的C很要命的,流程控制全靠它了,一定要小心呵護的。[:D]
          還有,記得修改完畢后重新啟動Apache Tomcat。

          *3*

          我在網(wǎng)上看到有人對這個問題說“試了千百回,改了千百次,就是不知道什么原因”。
          如果你也恰好和struts是初戀,也恰好試了千百回,改了千百次,
          “Cannot find ActionMappings or ActionFormBeans collection”的錯誤仍然濤聲依舊,
          那么,請不要灰心,
          相信我,勝利的喜悅你馬上就能體會到!

          因為,這里有一個畢殺絕技!!!!!

          請按照如下操作:

          打開TOMAT_HOME\conf\server.xml文件,找到在上面提到過的加入WEB應(yīng)用的那一行:

          ? <Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

          然后對其修改成為:

          ? <Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true" privileged="true"/>

          這樣就加上一個參數(shù):privileged="true",這個參數(shù)是至關(guān)重要的。
          (我花N多時間找了N多帖子問了N個人才搞定的,可見struts的初戀有多辛苦了!! [:(])
          ?
          然后重新啟動Apache Tomcat,這樣訪問JSP頁面就沒有問題了。[:D]
          ?
          *4*

          我在網(wǎng)上查找了一些struts應(yīng)用的配置說明資料,一些配置資料上只提到把struts.jar這個文件copy到\WEB-INF\lib\中,
          而并沒有說需要把sturts的全部*.jar文件進行copy。
          上面提到過,struts.jar包含了struts中的所有Java類。故我有此一試。
          (當然,如果連struts.jar都沒有了,那就沒有搞頭了。[:(] )

          我只把struts.jar文件copy到\StrutsWeb\WEB-INF\lib\中,然后啟動Apache Tomcat(當然,web.xml和struts-config.xml已經(jīng)配置完畢)。
          一試,果然不爽。

          訪問JSP頁面時,看到提示錯誤:

          ? “org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection”

          傻眼了。

          又折騰了半天,發(fā)現(xiàn)上面提到的privileged="true"在這種情況下也可以發(fā)揮作用,
          即修改server.xml文件,在<Context>的描述中加上參數(shù)privileged="true",使之變成這樣:

          ? ?<Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true" privileged="true"/>

          這樣就可以訪問JSP頁面并且運行無誤,沒有錯誤提示了。[^ō^]

          所以可以得出這樣一個東東:
          ? ?如果在\StrutsWeb\WEB-INF\lib\中只有一個struts.jar而沒有其他的*.jar文件,那么,在server.xml文件 中把相對的WEB應(yīng)用的描述進行修改,在其中加入privileged="true"參數(shù),就可以使struts項目的應(yīng)用正常運行且訪問無誤。



          二、Win2k + JDK1.4 + Apache Tomcat 5.0.13 + jakarta-struts-1.1 環(huán)境

          用Tomcat5作為JSP的容器,上述問題在struts中也會經(jīng)常遇到,解決方法也都大致相同,privileged="true"對Tomcat5也同樣有效。[:D]

          下面主要說一下不同的地方。

          平時對Apache Tomcat沒有仔細研究,這次發(fā)現(xiàn)了幾點,簡略記錄一下。

          *1*

          與Apache Tomcat4比較,Apache Tomcat5在其conf文件夾中增加了Catalina目錄及子目錄,其詳細路徑為:TOMCAT_HOME\conf\Catalina\ localhost\,在localhost文件夾中全部是*.xml文件。
          每個*.xml文件對應(yīng)一個Tomcat的WEB應(yīng)用的名字。

          localhost文件夾中,Apache Tomcat5自動生成的有兩個文件,即admin.xml和manager.xml文件。

          當Apache Tomcat5啟動后,就可以這樣訪問了:

          ? http://127.0.0.1:8080/admin/
          ? http://127.0.0.1:8080/manager/

          其中,訪問http://127.0.0.1:8080/admin/ ,通過用戶名和密碼的驗證后,就可以進入Tomcat的WEB服務(wù)管理器(TOMCAT WEB SERVER ADMINISTRATION TOOL)了。

          *2*

          在Tomcat4中新增一個WEB應(yīng)用項目的訪問,是在TOMAT_HOME\conf\server.xml文件中增加一個<Context>描述,在server.xml中找到如下行:

          ? <!-- Tomcat Root Context -->
          ? <!--
          ? ? ? <Context path="" docBase="ROOT" debug="0"/>
          ? -->

          然后在其下面加上這句:

          ? <Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

          保存server.xml后重新啟動Apache Tomcat4,就可以通過http://127.0.0.1:8080/mystruts/ 來訪問這個WEB應(yīng)用了。

          在Tomcat5中同樣的也可以這么做。

          同樣的,在TOMAT_HOME\conf\server.xml文件中增加一個<Context>描述,重新啟動Tomcat服務(wù)后就可以用來訪問了。

          需 要特別指出的是,當在在Tomcat5的server.xml文件中增加一個<Context>描述后,重新啟動Tomcat時,會自動在 TOMCAT_HOME\conf\Catalina\localhost\路徑下生成一個xml文件,這個xml文件的名稱和< Context>描述中所寫的WEB應(yīng)用的名字是一樣的。
          如果server.xml文件中的這個<Context>描述有所改動的話(增加屬性或修改屬性),重新啟動Tomcat時,這些改動變化都會及時的反映在同名的xml文件中(這樣就做到了同步一致)。

          例如上面在server.xml中所寫的
          <Context path="/mystruts" docBase="TOMCAT_HOME\webapps\ROOT\StrutsWeb" debug="0" reloadable="true"/>

          當Tomcat5啟動后,會在\Catalina\localhost\下生成一個名字為“mystruts.xml”的文件。
          其內(nèi)容和server.xml中所寫的一樣,為:

          <Context docBase="TOMCAT_HOME/webapps/ROOT/StrutsWeb" path="/mystruts" reloadable="true">
          </Context>

          所 以,我們可以這樣說:如果要在Apache Tomcat5中新增WEB應(yīng)用服務(wù)的話,就可以直接在TOMCAT_HOME\conf\Catalina\localhost\路徑下編輯生成一個 xml文件,在這個xml文件中寫上相對應(yīng)的<Context>描述即可,而不需要在server.xml中增加或編輯其他東東了。 [^ō^]


          *3*

          另外,需要說明的是,Apache Tomcat正常安裝后的啟動方式有多個:

          ? ?** 可以在TOMCAT_HOME\bin\中點擊startup.bat來啟動Tomcat服務(wù)。

          ? ?** 可以在“開始”-->“程序”-->“Apache Tomcat”菜單中點擊“Start Tomcat”來運行Tomcat服務(wù)。

          但是,Tomcat4和Tomcat5的服務(wù)運行形式是不一樣的。

          Tomcat4無論從“startup.bat”點擊運行還是從“Start Tomcat”點擊運行,都會出現(xiàn)黑屏白字的命令提示符窗口(類DOS窗口),用來提示說明Tomcat服務(wù)的運行情況和一些日志信息。

          Tomcat5 從“startup.bat”點擊運行后,出現(xiàn)的是黑屏白字的命令提示符窗口,而從“Start Tomcat”點擊運行后,服務(wù)窗口不會出現(xiàn),而只會在屏幕的右下方出現(xiàn)一個帶綠色三角的托盤圖標([:D]乍一看,這個圖標和MS SQLSERVER服務(wù)管理器的圖標幾乎一模一樣)。


          *4*

          使用Apache Tomcat5做服務(wù),特別需要指出的是,如果在TOMAT_HOME\conf\server.xml文件中增加一個<Context>描述,
          用“startup.bat”方式啟動Tomcat服務(wù)時,在命令提示符窗口上會顯示出如下信息(但是不會影響struts的使用)
          ------------------------------
          警告: Error storing config file
          java.io.FileNotFoundException: ..\..\conf\Catalina\localhost\mystruts.xml (系統(tǒng)找
          不到指定的路徑。)
          ------------------------------
          并且\Catalina\localhost\下對應(yīng)的xml文件不會得到更新。

          從“Start Tomcat”點擊運行Tomcat5服務(wù)是不會有這種情況的(這個可以察看Tomcat的日志文件)。


          *5*

          再來關(guān)注一下<Context>描述中的參數(shù)“privileged="true"”。

          在路徑TOMCAT_HOME\conf\Catalina\localhost\下,找到Apache Tomcat5自動生成的有兩個文件,即admin.xml和manager.xml文件。

          打開xml文件,能分別找到如下內(nèi)容:
          ------------------------------
          <Context path="/admin" docBase="../server/webapps/admin"
          ? ? ? ? ?debug="0" privileged="true">
          </Context>


          <Context path="/manager" docBase="../server/webapps/manager"
          ? ? ? ? debug="0" privileged="true">
          </Context>
          ------------------------------

          呵呵,看明白了嗎?
          Apache Tomcat5自動生成的xml文件中,對<Context>的描述中,都有一個參數(shù),即privileged="true" 。
          ? ?

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          posts - 51, comments - 17, trackbacks - 0, articles - 0

          Copyright © 笨蛋啊帆

          主站蜘蛛池模板: 武安市| 视频| 库伦旗| 建平县| 津南区| 青田县| 织金县| 池州市| 交口县| 威海市| 衡阳市| 进贤县| 曲阳县| 桃园县| 小金县| 台山市| 葫芦岛市| 新绛县| 开阳县| 呼和浩特市| 万荣县| 台山市| 阜平县| 湘阴县| 鸡泽县| 南乐县| 台江县| 遂昌县| 垦利县| 雷波县| 海原县| 鄂托克前旗| 武宣县| 西乌| 本溪| 元朗区| 平罗县| 桑日县| 梓潼县| 苍山县| 远安县|