準備工作,我使用下列的系統和軟體
Windows XP
Eclipse 3.12
Tomcat 5.5.15(要下載.zip解壓縮版,不要用.exe安裝版)
Sysdeo Tomcat Plugin Launcher v3.1final
WebWork
安裝Tomcat Plugin
有許多給Eclipse用的Tomcat Plugin軟體,而這裡是用Sysdeo的Tomcat Plugin來整合Eclispe和Tomcat,下載Sysdeo Tomcat Plugin的網頁在http://www.sysdeo.com/eclipse/tomcatplugin
解壓縮下載的檔案到<ECLIPSE_HOME>/plugins的資料夾中。
安裝Tomcat
如果還沒有下載Tomcat那就來這裡http://tomcat.apache.org/下載吧,記得要下載.zip版本,解壓縮就可以安裝好Tomcat喔。
在Eclipse中設定Tomcat Plugin
啟動/重啟Eclipse這樣才會載入剛剛按裝的Plugin。
如果剛剛安裝的Plugin有啟動,那馬上可以在Eclipse選單下方看到新的三個圖示。
這三個按鈕的功能是啟動、停止、重啟Tomcat用的。
現在設定這個Plugin,在Windows -> Preference.點選Tomcat文字.
Tomcat version選下載的版本,這裡用Version 5.x 版,再選擇<TOMCAT_HOME>就是剛剛安裝解壓縮Tomcat的資料夾。Context decleration mode 就是選Server.xml。
Advanced就是預設的不用更動,JVM Settings 需要確定有選擇一個JRE。
洏Source Path確定有勾選Automatically compute source path.
這樣就按OK按鈕關掉視窗。
建立一個新的專案
好,我們在Eclipse中建立一個專案,而專案的目錄結構如下,可以在Window-->Show View選Navigator模式來建資料夾。
<project_home>
+ src
+ java
+ webapp
+ WEB-INF
+ classes
+ lib
在lib資料夾可以把需要使用到的.jar檔放到此資料夾中,這裡我放入下列檔案
commons-logging.jar
freemarker.jar
javamail.jar
log4j-1.2.9.jar
ognl.jar
oscore.jar
rife-continuations.jar
servletapi.jar
spring.jar
webwork-2.2.1.jar
xwork.jar
有些設定檔案比較適合放在class path下的,這樣比較好做不用WebContainer的測試。所以呢,在src/java的資料夾中需要放入整合Spring的設定檔和Log4J的 設定檔log4j.properties,WebWork的設定檔webwork.properties和XWork的設定檔案xwork.xml,下列 是此四個設定檔案的內容
Spring設定檔applicationContext.xml一開始是空的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
</beans>
Log4J的設定檔案log4j.properties。
log4j.rootLogger=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %-5p %c - %m%n
#log4j.category.org.springframework=DEBUG
#log4j.category.com.opensymphony.webwork=DEBUG
#log4j.category.com.opensymphony.xwork=DEBUG
webwork.properties的內容,這是給開發環境使用的設定,運行環境要另外寫過喔。
webwork.locale=zh_TW
webwork.objectFactory = spring
webwork.devMode = true
webwork.configuration.xml.reload = true
webwork.url.http.port = 8080
xwork.xml是來設定動作(action)的檔案
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="default" extends="webwork-default">
</package>
</xwork>
而在WEB-INF資料夾中需要web.xml檔案才是個JAVA網頁程式,web.xml內容如下。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>acelife</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/applicationContext*.xml
</param-value>
</context-param>
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
到目前為止幾乎已經完成WebWork程式設定了,再來就是告訴Eclipse編譯過的class要放到webapp/WEB-INF /classes,可以在Project-->Properties然後選則Java Build Path底下有個Default output folder瀏覽選向webapp/WEB-INF/classes資料夾。然後上面的Source移除原來的專案名稱,點選Add Folder..重新選到
專案名稱下的src的java資料夾打就好,按OK按鈕,再按OK按鈕,就完成Java編譯輸出class的設定。
點選上面Libaries頁面,點右邊的Add JARs..把專案裡面的webapp/WEB-INF/lib的jar檔全部選進去,按OK完成網頁程式需要的jar檔設定。
再 來點選左邊Tomcat來設定與Tomcat的整合,在General這頁,有個Is Tomcat Project要打勾,Context Name就是Application Name,輸入想要的名稱,如/demo,切記要輸入/斜線喔。底下有個Subdictionary to set as web application root(optional)
因為我們的jsp網頁和WEB-INF放在webapp裡面,所以這裡就填/webapp(記得加/斜線)就好了。
最後我們在專案資料夾上點選滑鼠右鍵,跳出一個選單,選Tomcat Project的Add Tomcat library to project build path,來設定與Tomcat的lib關連;再重複一次選Tomcat Project的Create JSP work dictionary,就可以看到專案資料夾裡面多一個work資料夾,所有runtime時產生的程式碼Java、class都會在這裡面。
好,完成全部設定了,我們先寫一個靜態網頁看看有沒有與Tomcat整合,在webapp資料夾中建立一個文件index.html內容就是最有名的Hello World。
<html>
<body>
<h1>Hello World</h1>
<p/>
</body>
</html>
現在,點選Eclipse選單下方三個Tomcat圖示,左邊那個圖示來啟動Tomcat,在Eclipse下方的視窗中可以看到Tomcat運行的訊息。
然後我們開啟瀏覽器輸入http://localhost:8080/加上application名稱,如果剛剛設定的是/demo,那輸入http://localhost:8080/demo就可以看到Hello World訊息在瀏覽器中,這也表示Tomcat運作正常。
再來我們要開始寫WebWork程式了。我們先建立一個Class檔案叫做HelloAction,應該建立在專案裡的src/java資料夾中,內容如下。
package us.arez.action;
import com.opensymphony.xwork.ActionSupport;
public class HelloAction extends ActionSupport {
private String world;
public String getWorld() {
return world;
}
public void setWorld(String world) {
this.world = world;
}
public String execute() throws Exception {
world = "Hello World from your Action";
return SUCCESS;
}
}
因此我們必須去更改xwork.xml的內容,知道這個動作(action)的存在。
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="default" extends="webwork-default">
<action name="hello" class="us.arez.action.HelloAction">
<result name="success">hello.jsp</result>
</action>
</package>
</xwork>
然後需要在歡迎頁面加入這個動作(action)的連結,所以我們更改index.html的內容為:
<html>
<body>
<h1>Hello World</h1>
<p/>
<a href="hello.action">Hello World Action</a>
</body>
</html>
最後我們還需要為這個動作(action)設定一個結果返回頁面,所以在webapp資料夾中建立了一個hello.jsp檔案。
<%@ taglib uri="/webwork" prefix="ww"%>
<html>
<body>
<h1>This is my first WebWork action</h1>
<p/>
What did the action say? <ww:property value="world"/>
</body>
</html>
現在按瀏覽器重新整理的按鈕,可以看到網頁內多了一個連結,點下去這個連結,就會執行WebWork動作(action)並秀出結果返回頁面。
現在更新HelloAction.java的內容,如把world = "Hello World from your Action";改成world = "Hello World Wonderfully";,儲存檔案,然後點選瀏覽器的重新整理按鈕,看到畫面的改變了吧,這不是很棒嗎!!
除錯
並沒什麼問題,只要在程式碼設定中斷點,然後就可以在Tomcat中除錯了,真的是簡單愉快的事情阿。
相关文章还有:
http://cwiki.apache.org/WW/setting-up-eclipse-with-tomcat.html