首頁>技術>

軟體專案實訓及課程設計指導——如何在Struts框架中應用FreeMarker模板技術的例項

1、Struts應用框架全面地支援FreeMarker模板技術

(1)Struts應用框架也同樣提供對FreeMarker模板技術的支援

而在Struts應用框架中應用FreeMarker模板技術,開發人員只需要在Web應用系統的部署描述檔案web.xml中配置出與FreeMarker模板相關的FreemarkerServlet元件(參看如下示例圖所示),然後由該FreemarkerServlet元件將專案中的相關Action類中所儲存的模型資料和模板檔案相互整合組裝成最終的HTML頁面檔案、並向Web瀏覽器輸出。

(2)在專案的web.xml檔案中配置定義FreemarkerServlet元件的程式碼示例

作者在下文為讀者介紹在J2EE Struts應用框架的應用系統環境中如何應用FreeMarker模板技術。

2、在基於Struts應用框架的Web專案中新增與FreeMarker有關的*.jar包檔案

在Web專案中新增與FreeMarker有關的*.jar包檔案,操作的主要過程可以參看如下示圖所示。

3、在基於Struts應用框架的Web專案中新增一個請求頁面fmtUserLogin.jsp

(1)在Web專案中新增一個請求的JSP頁面,該頁面的檔名稱為fmtUserLogin.jsp檔案,在MyEclipse開發工具中選擇檔案新建選單專案,然後創建出一個JSP型別的頁面檔案,操作的主要過程可以參看如下示圖所示。

(2)fmtUserLogin.jsp檔案的程式碼內容參看如下的示例

<%@ page language="java" pageEncoding="gb2312"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html lang="true">    <head><html:base /><title>fmtUserLogin.jsp</title></head>    <body>        <html:form action="/userInfoURL.do?action=goFMTUserLogin" method="post" >              <html:hidden property="formType" value="1"/>              <table border="0">                  <tr> <td>您的名稱:</td><td><html:text property="userName" /></td></tr>                  <tr> <td>您的密碼:</td><td><html:password property="userPassWord" /></td></tr>                  <tr> <td colspan="2" align="center">                  <html:submit value="提交" property="submitButton" onclick="this.value='正在提交請求,請稍候'"/>                  <html:reset value="取消" property="resetButton" />                  </td></tr>              </table>        </html:form>    </body></html:html>

fmtUserLogin.jsp頁面檔案在靜態狀態下預覽的效果示圖請參看如下示例圖所示。

4、在Web專案中再設計一個處理的Action類,該類名稱為UserInfoAction

(1)本示例將採用Struts應用框架中的DispatchAction技術,並提供一個goFMTUserLogin方法

在Web專案中新增一個Action程式類,該Action程式類的檔名稱為UserInfoAction.java檔案,在MyEclipse開發工具中選擇檔案新建類專案,然後創建出一個Java程式類檔案,並在該UserInfoAction類中新增一個goFMTUserLogin方法。該goFMTUserLogin方法的程式程式碼參看如下示例,並注意其中黑體標識的語句。

public ActionForward goFMTUserLogin(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response){      String resultMessage=null; //這是DynaActionForm的實現程式碼      UserInfoActionForm userLoginForm = (UserInfoActionForm) form;      String userName = (String)userLoginForm.get("userName");      String userPassWord = (String)userLoginForm.get("userPassWord");      boolean returnResult=userName.equals("yang") &&userPassWord.equals("1234");      if(returnResult){     				 resultMessage =userName+"您登入成功!";      }      else{      			resultMessage =userName+"您的身份資訊無效!";      }      request.setAttribute("showResultInfo", resultMessage);      return (mapping.findForward("showFMTLoginInfo"));}

在Action類中只需要將資料儲存在request物件中,然後跳轉到模板檔案中就可以了。

(2)配置出該Action及跳轉的目標,並請注意其中黑體標識的語句

<action path="/userInfoURL" name="userInfoActionForm" roles="user"type="com.px1987.sshproject.action.UserInfoAction" scope="request" parameter="action">      <forward name="loginSuccess" path="/loginSuccess.jsp" />      <forward name="loginFailure" path="/loginFailure.jsp" />      <forward name="registerFailure" path="/userManage/registerFailure.jsp" />      <forward name="registerSuccess" path="/userManage/registerSuccess.jsp" />      <forward name="showFMTLoginInfo" path="/userManage/showInfoFMTTemplate.ftl" /></action>

5、在基於Struts應用框架的Web專案中新增一個模板檔案

(1)showInfoFMTTemplate.ftl模板檔案

在Web專案中新增一個模板檔案,該模板檔案的檔名稱為showInfoFMTTemplate.ftl。在MyEclipse開發工具中選擇檔案新建選單專案,然後創建出一個模板檔案,操作的主要過程可以參看如下示圖所示。

(2)showInfoFMTTemplate.ftl模板檔案的程式碼內容,並注意其中的黑體標識的語句,該檔案中的程式碼主要是獲得使用者登入後的狀態資訊。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>       <head>             <title>showInfoTemplate.ftl</title>            <meta http-equiv="content-type" content="text/html; charset=gb2312">      </head>      <body>            <h2>採用標準的方式獲得引數值: ${showResultInfo}</h2 > <br>      </body></html>

讀者需要注意的是,由於showInfoFMTTemplate.ftl模板檔案不是JSP型別的頁面檔案,而是普通的文字檔案,該檔案的內容不需要透過JSP引擎的解析和處理。如下示例圖為showInfoFMTTemplate.ftl模板檔案在MyEclipse開發工具中的顯示狀態圖。

從上面的showInfoFMTTemplate.ftl模板頁面檔案示例中可以瞭解到FreeMarker的模板檔案基本上就是靜態的HTML頁面,FreeMarker模板檔案主要由如下4個部分組成:

1)文字:直接輸出的部分

2)註釋:<#-- ... -->格式部分,不會輸出

3)插值:即${...}或#{...}格式的部分,將使用資料模型中的部分替代輸出

4)FTL指令:由FreeMarker指定但和HTML標記基本類似,名字前加#予以區分,不會輸出。

6、在Web專案的部署描述檔案web.xml中配置出下面的內容

7、部署本Web示例專案和測試示例中的相關功能

(1)在瀏覽器中啟動測試頁面

一旦將本Web專案部署成功後,然後再啟動伺服器。在瀏覽器的URL位址列中輸入如下示例圖中所示的URL地址將能夠啟動本示例中的測試頁面。

(2)在表單中輸入相關的引數後的提交輸出結果,參看如下示例圖所示

(3)再測試非法登入狀態是否能夠識別

在測試頁面的表單中輸入模擬系統登入相關的賬戶和密碼,但這次故意輸入不正確的登入引數,最終瀏覽的結果參看如下示例圖所示。

從示例程式返回的結果來看,本示例的功能實現是完全正確。因此,本示例正確地實現了將Struts應用框架和FreeMarker模板相互整合,並在Web頁面中應用FreeMarker模板技術同樣也能夠獲得從伺服器返回的處理結果。

但由於showInfoFMTTemplate.ftl模板檔案不是JSP型別的頁面檔案,而是普通的文字檔案,該檔案的內容不需要透過JSP引擎的解析和處理。因此頁面的響應速度將會大大地提高,從而應用FreeMarker模板技術的Web頁面可以是非JSP型別的Web頁面——達到"動態內容靜態化"的應用效果。

32
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java程式設計師工作和麵試必看:搞定微服務架構基礎知識