此時執行組件屬性設定對話框中主要項目皆已設定完畢,按下OK按鈕返回項目屬性設定對話框。項目屬性對話框中將把前述步驟所設定之執行組件列於RuntimeConfigurations清單方塊中,按下OK按鈕即完成執行組件設定。
步驟七:執行Web應用程序
接下來可點擊選擇JBuilder菜單Run或工具列中綠色三角形符號執行此Web應用程序。JBuilder將於集成開發環境內激活Tomcat4.0Server,我們可以通過JBuilder內置之Web瀏覽器進行測試,或於MicrosoftInternetExplorer網址字段中鍵入:
http://localhost:8080/demo/input.jsp
以進行測試。在Web瀏覽器中我們鍵入AAA與BBB按下Submit按鈕,得到預期之運算結果AAABBB。
倘若將第一個字段改以繁體中文鍵入,卻發現產生亂碼,字符串連接結果也無法正確辨認。StrutsFramework並無中文兼容性上之問題,但是Tomcat4.0在使用JSP處理內含中文請求時,並需設定請求編碼。繁體中文環境常用編碼為Big5與MS950,MS950編碼含括Big5編碼,並額外增加碁、恒、裏、妝、嫻、鏽、牆等七字。
例如,在MicrosoftWindows平台下,欲使Tomcat4.0正確處理繁體中文,通常在JSP起始處加上:
<%@pagecontentType="text/html;charset=MS950"%>
<%request.setCharacterEncoding("MS950");%>
以設定網頁內容編碼與請求編碼為MS950編碼;類似地,對於簡體中文(常用編碼為GB2312),以上的代碼應為:
<%@pagecontentType="text/html;charset=GB2312"%>
<%request.setCharacterEncoding("GB2312");%>
但是StrutsFramework中實際上是由ActionServlet收到Web瀏覽器端請求,再轉交特定之Action類加以處理,因此直接於JSP中設定請求編碼並無效果。
三、處理中文編碼問題(以繁體中文為例)
對於處理StrutsFramework中文編碼問題有多種方式,在此我們繼承ActionServlet類並覆蓋process方法,於子類process方法中設定請求編碼。由此展現ActionServlet扮演前端Controller之特質。
首先,點擊選擇JBuilder主菜單File|NewClasses準備產生一新的類。並繼承自org.apache.struts.action.ActionServlet並將預設的類名稱由Untitled1改為myActionServlet。按下OK按鈕後即產生程序代碼。點擊選擇JBuilder主菜單Wizards|OverrideMethods...激活覆蓋方法精靈,覆蓋方法精靈會自動列出父類ActionServlet所有可供覆蓋之方法。我們可於Availablemethods清單方塊中選取process(HttpServletRequestrequest,HttpServletResponseresponse)方法,完成後按下OK按鈕。
此時我們可修改覆蓋後process方法程序代碼如下:
request.setCharacterEncoding("MS950");
super.process(request,response);
備注:此處以繁體中文為例,在中國國內一般我們用的是簡體中文,因此可以將上述代碼在簡體中文環境下編寫為:
request.setCharacterEncoding("GB2312");
super.process(request,response);
首行程序代碼將process傳入之參數request設定為MS950編碼,其餘行為同父類。接下來我們將要修改web.xml部署描述檔,以指定Servlet之進入點,首先點擊選擇左上方項目窗格中的web.xml。
此時,左下方結構窗格將出現web.xml內XML標記之樹狀結構。我們可以點擊選擇Servlets內的Action項目。
此時,便可運用右方內容窗格之圖形使用者接口編輯器修改Servlet進入點,目前預設之進入點是StrutsFramework的ActionServlet。
我們可以按下Servletclass項目右方[...]按鈕選取新的進入點替換預設之ActionServlet,也就是之我們撰寫之strutsdemo.myActionServlet。倘若我們非常熟悉web.xml結構,同樣地可以直接點擊選擇內容窗格內的Sources頁次,直接以文字編輯器修改<servlet-class>標記的內容。
修改完畢後,內容窗格內應如下圖:
完成後重新編譯此項目並執行之。再次測試後我們將發現繁體中文已經可以正確處理。