/** * 由 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…