利用 WebSphere Application Server V8 和 Rational Application Developer V8 開發 Java EE 6 應用程序5


圖 14. 配置 RAD 與 WAS server 的連接

點擊 Next,填寫其他必要信息後,這個 Server  就被添加到  RAD 中,可以在 RAD 中控制 Server 的啟動、停止、重啟、應用部署、應用移除等工作。

當 WAS Server 的狀態為”Started, Synchronzied”時,右鍵點擊 AccountManagementWeb 項目中 AccountLogin.jsp,選擇 Run as -> Run on Server ,選擇 WAS V8 Server,Account Login 應用就被部署到 WAS server 上。 同時,RAD 內置的 Web browser 會訪問 http://localhost:9081/AccountManagementWeb/AccountLogin.jsp , 顯示 AccountLogin.jsp 中設計的登錄界面。輸入預先定義好的用戶名 username0,密碼 password0,點擊 Login 按鈕,用戶登錄成功,頁面轉去顯示 username0 用戶的詳細信息,如前文圖 1 所示。

至此,我們已經完成了用 EJB 3.1,JPA 2.0,Servlet 3.0 構建 Account Login 程序的工作。在下文中,我們將對其進行一定的改動,進一步豐富其功能。


 

利用 EJB in WAR 對 Account Login 程序重新打包

在前文中,我們生成了 AccountManagementEJB 和 AccountManagementWeb 兩個工程,並將其加入到 AccountManagement.ear 中。當您在 RAD 中導出該 ear 文件時,Web 模塊和 EJB 模塊將被分別打包成 .war 和 .jar 文件,如圖 15 所示:


圖 15. AccountManagement.ear 內容

EJB 3.1 規範允許將 EJB bean class 文件直接打包在 WEB-INF/classes 目錄下或者將 .jar 文件直接部署在 WEB-INF/lib 目錄下。如圖 16 所示。


圖 16. EJB in WAR 圖示

利用 EJB in WAR 的新特性,我們可以在 RAD 中對 Account Login 程序重新打包。新建一個 Dynamic Web Project, 命名為 AccountManagementWeb_updated,即可直接在這個工程中進行 EJB session bean, JPA entity, Servlet 的開發,而無需再單獨創建的 EJB 項目。

方便起見,在本文中,我們僅僅是將 前一章中創建的代碼和 xml 文件複製到新的 AccountManagementWeb_updated 工程中,如圖 17 所示。


圖 17. AccountManagementWeb_updated 工程圖示

figure17_AccountManagementWeb_updated.jpg

導出 AccountManagementWeb_updated.war, 可以在 WEB-INF/classes 目錄下找到 EJB session beans。如圖 18 所示。


圖 18. AccountManagementWeb_updated.war 內容

將 AccountManagementWeb_updated 部署到 WAS 中,運行 AccoutLogin.jsp,可以完成前文描述的全部功能。


 

利用 Bean Validation 擴展 Account Login 程序

JSR 303 Bean Validation 規範提供了對 Java EE 和 Java SE 中 Java Bean 進行驗證的方式,主要使用注釋方式實現對 Java Bean 的驗證功能,使驗證邏輯從業務代碼中分離出來。 Bean Validation 被 Java EE 6 各個規範廣泛支持,包括 EJB, JPA, Servlet 等等。 詳情參考文章”Bean Validation 技術規範特性概述“,本文中不再贅述。

在本章中,我們擴展 Account Login 程序,添加一個 Account Create 模塊,用於註冊新用戶。利用 Bean Validation 規範內嵌的 @Null, @Size 等注釋,對用戶輸入的信息進行驗證。

    利用 Bean Validation,更新 Usertab.java, 如清單 8 所示。

清單 8. Bean validation 注釋

 

@NotNull(message=”Username cannot be null.”)

@Size(min=3, max=36, message=”A

username cannot be less than 3 characters or longer than 36 characters.”)

private String username;

@NotNull(message=”Must have a password set.”)

@Size(min=6, max=12, message=”Your password must be 6-12 characters long.”)

private String password;

 

@NotNull(message=”Email must be provided in format you@there.com”)

@Size(max=36, message=”An email address cannot be longer than 36 characters.”)

@Pattern(regexp

= “[\\w!#\\$%&’\\*\\+\\-/=\\?\\^_`\\{\\}\\|~\\.]

+@[\\w\\-&&[^_]]+\\.[a-zA-Z]{2,4}”,

message=”An email address must include an @ and a . to be valid.”)

private String email;

清單 8 中,@Null 注釋表示其修飾的變量不為空,@Size 注釋表示其修飾的變量長度限制,@Pattern 注釋要求其修飾的變量必須符合規定的正則表達式規則。

    更新 AccountService.java, 添加 AccountCreate 方法,對用戶輸入進行驗證。參考清單 9。

清單 9. 驗證用戶輸入

 

user = new Usertab(username, password, email);

Set<ConstraintViolation<Usertab>> set = validator.validate(user);

if (!set.isEmpty()) {

throw new AccountManagementExceptions(“Error in values you’ve given to user.

     Rules are, username must be more than 3 characters or less than 36 characters,

email must be in the form of you@there.com,

and a password from 6-12 characters long.”);

}

try {

     em.persist(user);

}

catch (Exception e) {

     ….

}

    更新 Servlet 和 JSP,添加 AccountCreate.jsp 和 AccountCreate.java,參考圖 17 的示例。其源代碼不在此贅述,請參見附錄的代碼清單。

在 RAD 中運行 AccountCreate.jsp, 輸入合法的用戶註冊信息,新用戶生成,頁面轉而顯示用戶信息,如圖 19 所示。

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營