|
/** * 由 OpenJPA 元模型生成器工具生成。 **/
package com.ibm.Accountmanagement;
import javax.persistence.metamodel.ListAttribute; import javax.persistence.metamodel.SingularAttribute;
@javax.persistence.metamodel.StaticMetamodel (value=com.ibm.Accountmanagement.Usertab.class) @javax.annotation.Generated (value=”org.apache.openjpa.persistence.meta.AnnotationProcessor6″, date=”Mon Aug 08 17:17:56 CST 2011″) public class Usertab_ { public static volatile SingularAttribute<Usertab,Short> age; public static volatile SingularAttribute<Usertab,String> email; public static volatile SingularAttribute<Usertab,String> gender; public static volatile SingularAttribute<Usertab,String> password; public static volatile SingularAttribute<Usertab,Long> userid; public static volatile SingularAttribute<Usertab,String> username; } |
在 Static Metamodel 基礎上,實現用戶名、密碼驗證的 Criteria API 代碼如清單 5 所示。
|
CriteriaBuilder qb = em.getCriteriaBuilder(); CriteriaQuery<Usertab> c = qb.createQuery(Usertab.class); Root<Usertab> userclass = c.from(Usertab.class); Predicate condition_username = qb.equal(userclass.get(Usertab_.username),username); Predicate condition_password = qb.equal(userclass.get(Usertab_.password),password); c.where (qb.and(condition_username, condition_password)); TypedQuery<Usertab> q = em.createQuery(c); user = (Usertab)q.getSingleResult(); |
清單 5 中,第 1 行和第 2 行,構造了 CriteriaQuery 實例;第 3 行定義了查詢表達式 from Usertab;第 4 行 — 第 6 行定義了查詢條件;第 7 行執行查詢;第 8 行獲取查詢結果。
清單 5 列出了 AccountService.loginUser 方法的主要部分。除此以外,loginUser (String username, String password) 方法還包含了一些 Exception 處理的代碼,不在此贅述,請參閱附錄的代碼清單。
在 Dynamic Web Project “AccountManagementWeb”,新建 Servlet, 設置其 Package Name 為 com.ibm.Accountmanagement.servlet, Class Name 為 AccountLogin.java。
依據 Servlet 3.0 中 Servlet Annotation 定義,URL mapping 的定義可由 @WebServlet 注釋實現,不再需要 web.xml 文件,如清單 6 所示。
|
package com.ibm.Accountmanagement.servlet;
import …
/** * Servlet implementation class AccountLogin */ @WebServlet(“/AccountLogin”) public class AccountLogin extends HttpServlet { private static final long serialVersionUID = 1L;
@EJB AccountService Account; Usertab myUser;
protected void doGet(HttpServletRequest request, HttpServletResponse response) { this.doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response){ HttpSession session = request.getSession(true); String username = request.getParameter(“username”); String password = request.getParameter(“password”); String message =””; myUser = null; // login… if (username != null && password != null) { try { myUser = Account.loginUser(username, password); } catch (Exceptions e) { …. } }
if (myUser != null) { session.setAttribute(“user”, myUser); request.getRequestDispatcher(“AccountInfo.jsp”).forward(request, response); } …. } |
在清單 6 中,我們還利用 @EJB 注釋,將 EJB session bean AccountService 直接注入到 Servlet 中,而後在 doPost 方法中調用了 loginUser (String, String) 方法,將用戶輸入傳遞到 EJB 層。在 doPost 方法的最後,根據 loginUser 方法的返回結果,對頁面進行的刷新。
最後,我們可以在 AccoutManagementWeb 項目中添加 JSP 頁面,完成我們在”準備工作 準備工作”章節中圖 1 所示的界面。參考清單 7 及附錄中的代碼清單。
|
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”> <%@page language=”java” contentType=”text/html; charset=GB18030″ pageEncoding=”GB18030″%> <html> <head> <title>AccountLogin</title> <meta http-equiv=”Content-Type” content=”text/html; charset=GB18030″> </head> <body>
<% String message = “”; message = (String)request.getAttribute(“message”); if (message == null) message = “”; %> <h3>Login to your account</h3> <p><font color=”red”><b><%=message %></b></font></p> <form name=”loginform” id=”loginform” action=”AccountLogin” method=”post”> <table border=”0″ width=”300″> <tbody> <tr> <td>username </td> <td><input type=”text” name=”username”></td> </tr> <tr> <td>password </td> <td><input type=”password” name=”password”></td> </tr> <tr> <td><input type=”submit” value=”login” name=”loginbutton” id=”loginbutton”></td> </tr> </tbody> </table><br><br>
</form>
</body> </html> |
在 RAD V8 中,切換到 Java EE Perspective, 在”Servers”View 中添加 WAS server,用於部署、運行 Account Login 程序。如果您的”Servers”View 沒有打開,請在 RAD 菜單 Window -> Show Views 中開啟。
在”Servers”中,滑鼠右鍵點擊空白區域,選擇 New->Server,在彈出窗口中選擇 WebSphere Application Server V8.0,填寫 Server ‘ s host name。在本文示例中,RAD 和 WAS 裝在同一台機器上,所以只需要輸入 localhost,如圖 13 所示。
點擊 Next,填寫指定的 WAS V8 Application Profile 的 SOAP 埠號,用於建立 RAD 與 WAS 的連接。如圖 14 所示。
以下文章點擊率最高
Loading…
