eclipse有很多插件可以用,有些功能確實是很不錯,但是有兩個問題使我很困擾:
一是有些插件過大,拖累eclipse運行速度變慢,有時真的是很難忍受.
二是eclipse版本升級很頻繁,往往導致插件無法運行.
若想在eclipse中啟動基于webwork的web應(yīng)用,之前我只能用myeclipse插件成功的啟動web而不出任何問題.
象sysdeo的tomcat的插件或者merve插件,盡管也可以啟動web,但是當打開頁面的時候,總是報jsp的tag未定義,比如webwork的tag.
經(jīng)過嘗試,其實問題解決起來很簡單:
1.將需要用到的tag描述文件放到src\webapp\WEB-INF\tags目錄下
比如如果用到了webwork.tld,valuelist.tld,struts-menu.tld,struts-menu-el.tld
如果用到了這幾個tld文件的話
就將其從相應(yīng)的jar的META-INF目錄下拷貝到src\webapp\WEB-INF\tags目錄下
2.在web.xml文件中加入
??? <taglib>
? <taglib-uri>http://www.opensymphony.com/webwork/tag</taglib-uri>
? <taglib-location>/WEB-INF/tags/webwork.tld</taglib-location>
?</taglib>
??? <taglib>
? <taglib-uri>http://valuelist.sourceforge.net/tags-valuelist</taglib-uri>
? <taglib-location>/WEB-INF/tags/valuelist.tld</taglib-location>
?</taglib>
??? <taglib>
? <taglib-uri>http://struts-menu.sf.net/tag</taglib-uri>
? <taglib-location>/WEB-INF/tags/struts-menu.tld</taglib-location>
?</taglib>
??? <taglib>
? <taglib-uri>http://struts-menu.sf.net/tag-el</taglib-uri>
? <taglib-location>/WEB-INF/tags/struts-menu-el.tld</taglib-location>
?</taglib>
3.我現(xiàn)在用jetty啟動web應(yīng)用,不需要安裝任何插件
在項目中加入一個jetty的啟動類,內(nèi)容是
public class SampleJettyLauncher {
?public static void main(String[] args) throws Exception {
? Server server = new Server();
? SocketListener listener = new SocketListener();
? listener.setPort(80); server.addListener(listener);
? server.addWebApplication("/","./target/sample/");
? server.start();
?}
}
需要將jetty中的ext和lib目錄下的所有的jar都加到項目的依賴中去.
4.我們需要將src下的內(nèi)容部署到target\sample目錄下,
為此,將src\main\java,src\main\resource,src\main\message\en,src\main\message\zh_CN,
src\webapp\WEB-INF\classes目錄都設(shè)定到源碼目錄,
輸出路徑設(shè)置為target\sample\WEB-INF\classes目錄
這樣eclipse就可以自動將所需的內(nèi)容放到輸出路徑下
將src\webapp\這個目錄下的文件,比如frameset.html,
src\webapp\WEB-INF\目錄下的文件,比如web.xml,sitemesh.xml,decorators.xml
src\webapp\WEB-INF\tags目錄
將上面提到的這三處的文件和目錄都拷貝到target\avms\下的相應(yīng)目錄下
這樣就可以了
通過上面的jetty的啟動類就可以很方便的啟動web程序
備注:
1.其實在web.xml中描述的taglib中直接指定tld文件的路徑只是一個方法
還有一個方法是指定tld文件所在的jar,這樣就不需要將tld文件從jar中拷出了,
但是這樣的話需要將jar文件放到項目目錄下,而我們一般都將jar放在maven\repository目錄里,
這樣就有問題,所以我還是手工將tld文件拷出.
2.我還不清楚為什么通過myeclipse啟動的時候,不需要在web.xml中顯示的聲明taglib.
這個疑惑還需要進一步研究.
3.其實安裝myeclipse插件后,在設(shè)定項目的源碼路徑時,可以指定某個源碼路徑的輸出路徑,
這樣的話,其實我們可以簡單的將src\webapp設(shè)定輸出路徑到target\avms就可以了
但是我發(fā)現(xiàn)沒裝myeclipse插件的話,手工設(shè)定輸出路徑有問題,這個可能是eclipse的問題了.
搞得上面提到的部署就有點繁瑣.
4.jetty是一個很小巧的web容器,啟動它甚至不需要任何配置文件,
當然了也可以通過配置文件對它進行設(shè)置,這個請看jetty的文檔.
使用tomcat的sysdeo插件我相信也是沒有問題的.
5.扔掉myeclipse后,我發(fā)現(xiàn)有個很大的好處,如果通過myeclipse啟動的話,
象如果配置了依賴項目,當你修改依賴項目的文件的時候,需要myeclipse重新部署.
myeclipse會自動為依賴項目打一個jar,這個很花時間.
而現(xiàn)在通過jetty來運行,可以即時修改,即時運行,不需要部署了.
posted on 2006-06-02 10:46
Rendezvous with Rama 閱讀(1086)
評論(0) 編輯 收藏 所屬分類:
Java