這篇文章是以前過去蛙齋中的文章(現在看到以前的文章覺得小蛙以前怎麼那麼勤勞,每個動作都附一張圖 …),最近有一個新的案子使用了 Struts2 開發,對 Struts2 有比較深的了解,先把這篇以前的文章記錄下來,之後再慢慢補上 Struts2 相關文章。

對 JSP 一天比一天熟悉,不過還沒擺脫「JSP菜鳥」的封號 …  這一陣子接觸 Struts2 的心得,在這邊記錄下來,免得到時候要重裝卻裝不起來 >< 附帶一提,原來 … MyEclipse 這麼好用,網路上的一些高手說的一點都沒錯,越便利的 IDE 會讓老手開發起來更快,卻會讓新手變得更白癡。
使用環境:
Tomcat 5.5
MyEclipse 5.5.1 GA
Struts 2.0.11
步驟如下:
1. 下載 Struts2 (http://struts.apache.org/2.x/index.html)
000001.png
2. 選這個
000002.png
3. 開啟 MyEclipse
000003.png
4. 選擇工作區域
000004.png
5. MyEclipse 視窗
000005.png
000006.png
6. 新增專案
000007.png
000008.png
7. 輸入專案名稱(可以隨便打),其他的直接用預設值不修改
000009.png
8. 按下 finish 後,看到下圖,左邊有多出一個剛剛新建立的專案
000010.png
9. 網頁直接放在 WebRoot 下面,且包含 META-INF 和 WEB-INF 資料夾
000011.png
10. 編輯 Tomcat 安裝資料夾 /conf/server.xml 檔案
000012.png
11. 找到文件最後輸入 <Context path=”struts” docBase=”C:\Web\blog\WebRoot” reloadable=”true” />,docBase 看剛剛 MyEclipse 建立專案的時候放在哪,就設置其下的 WebRoot 。注意,下面一定要看到 </Host> </Engine> </Service> </Server> 千萬別弄錯。
000013.png
12. 在 Tomcat 安裝目錄下 / bin / 的 tomcat5.exe (tomcat5w.exe也可以,看自己習慣),小蛙把 tomcat5.exe 建立捷徑,拉到開始旁邊的快捷列,重啟 SERVER 快很多 ^^
000014.png
13. 啟動 Tomcat,tomcat5.exe會看到下面第一張圖,tomcat5w.exe可以看到第二張圖。
000015.png
如果要讓 Tomcat 開機自動啟動,選擇 Automatic,這樣每次開機就會自行啟動了,不過小蛙覺得用上一張圖的做法會比較快速且方便。
000016.png
14. 啟動之後,開啟瀏覽器,在網址列輸入 http://localhost/struts/ (Tomcat 預設 port 為 8080,所以如果沒改過設定的話,這邊要輸入 http://localhost:8080/struts/ )可以看到 「This is my JSP page.」,這是剛剛新增專案的時候,MyEclipse 幫我們建立的 index.jsp 檔案。如果顯示「Internet Explorer 無法顯示網頁」,可能是 Tomcat 沒有啟動成功;如果顯示下圖,可能是路徑OR檔名打錯。
000017.png
15. 練習一個登入的範例,新增表單,文字、密碼欄位跟按鈕,如下:

<form name="form1" action="" method="post">
帳號 :<input type="text" name="name"><br>
密碼:<input type="password" name="pass"><br>
<input type="submit" value="送出">
</form>

HTML 的細節就不再贅述了,其中 action 部份小蛙留空白,等等再來填。在瀏覽器中可以看到
000018.png16. 要使用 struts2 必須先設定 WEB-INF / web.xml,詳細設定請參閱 中文亂碼總整理 (Tomcat 5.5)如果懶得自已 key 可以直接到文章底下載來用,第一個 filter 是解決中文亂碼的問題,第二個 filter 是為了讓 struts2 能夠正常運作。
000019.png
17. 將下載完的 struts2 解壓縮後,進入 struts-2.0.11 \ lib 下,找到 commons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.12.jarxwork-2.0.6.jar,將這五個 jar 複製到網站目錄下的 WEB-INF \ lib 裡,以剛剛的例子是 C:\Web\blog\WebRoot\WEB-INF\lib,(畫面上少一個~”~)
000020.png
18. 在 MyEclipse 左邊的 struts 專案中,按滑鼠右鍵點選 Refresh(F5)
000021.png
會變成下圖,可以看到剛剛載入的 jar 檔案,到這裡 struts2 的配置就差不多完成囉!! 接著,來試試看 struts2 是否能正常運作
000022.png
19. struts2 的控制全靠 .action (也就是 form 剛剛留空白要填的部份),我們將這個登入的 action 叫做 Login.action,把剛剛 form 後面的 action=”Login.action 補上。
000023.png
20. 在 struts 下的 src 資料夾上按滑鼠右鍵新增 package
000024.png
000025.png
21. 假設名字輸入 com.local
000026.png
22. 在新增的 com.local 再新增一個 Class file
000027.png
23. Name 的地方輸入我們要建立 action 的名稱(也就是剛剛的 form 要送出的地方 Login),接著按右邊的 Browser
000028.png
24. 在空格裡輸入 actionsupport,是我們要繼承的套件
000029.png
25. MyEclipse 會自己產生部份程式碼
000030.png
26. 輸入以下內容

private String name;
private String pass;
public String execute() throws Exception{
    return SUCCESS;
}
//下面的部份,可以自己寫,也可以直接用 MyEclipse 產生 (所以讓初學者變笨 >< 我就是 ...)
public String getName(){
    return name;
}
public void setName(String name){
    this.name = name;
}
public String getPass(){
    return pass;
}
public void setPass(String pass){
    this.pass = pass;
}

27. 自動產生的方法:Source -> Generate Getters and Setters
000031.png
28. 可以看到剛剛建立的變數名稱,把它們都打勾,按下OK
000032.png
29. 幾乎所有內容,MyEclipse 都幫忙產生了 @@
000033.png
30. 再來編輯輸入完帳號密碼後,轉向的頁面(這邊用result.jsp當例子),在 WebRoot 下按右鍵 -> New -> JSP
000034.png
31. 檔名改為 result.jsp
000035.png
32. 輸入以下內容

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>
  </head>
  <body>
 姓名為:  <s:property value="name"/> <br>
 密碼是:  <s:property value="pass"/>
  </body>
</html>

這邊我們使用 struts2 的標籤(第2行宣告),<s:property value=”name” /> 表示呼叫 Login.action 中的 getName() 方法來取得 name 的值;<s:property value=”pass” /> 同理。
33. 儲存之後,剩下最後一個工作,設定 struts.xml,這個檔案記錄了 action 跟 jsp 頁面的 mapping,在 src 點選右鍵 -> New -> XML
000036.png
34. 點選 Next,檔名輸入 struts.xml (千萬不能輸入錯誤,包括大小寫)
000037.png
000038.png
35. 在 struts.xml 中輸入以下內容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <package name="struts2" extends="struts-default">
  <action name="Login" class="com.local.Login">
     <result name="success">/result.jsp</result>
  </action>
 </package>
</struts>

36. 儲存之後,重新啟動 Tomcat,在網址列輸入 http://localhost/struts/ (or http://localhost:8080/struts/),接著在頁面中輸入帳號跟密碼,送出之後,就可以在 Login.action 指向的 result.jsp 頁面顯示剛剛設定的內容。

000039.png  000040.png

37. 開發 struts2 的流程,要傳資料的頁面(ex. index.jsp) -> action file -> 接收資料的頁面(ex. reslut.jsp) -> struts.xml (把對應加上去) -> 重新啟動 Tomcat …
一方面記錄下來 = =,神經大條如我,經常忘記環境怎麼設定;一方面希望對剛接觸 struts2 的網友能夠有幫助(應該照著設定就能把環境弄好)。:D
38. 範例檔案下載

2 Replies to “Struts2 設置筆記 (Hello World 級^^)”

  1. 你好
    我照您的教學執行一次
    步驟11我加入完,Tomcat就無法打開了
    事哪邊出問題嗎?

    1. 您好,先確定是否這步驟之前,tomcat 原本就打的開呢?
      倘若是,應該 tomcat log 裡面會有一些錯誤訊息,
      可以到那邊找找看喔!
      tomcat 無法啟動的原因太多了,
      包括 xml 格式錯誤、路徑錯誤、設定檔錯誤、缺少 jar、jar 衝突 …
      如果拿掉那行就可以正確執行了,
      就可以把問題限縮在該資料夾並且使用 struts2 之後才壞的,
      Good Luck !!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *