利用 WebSphere Application Server V8 和 Rational Application Developer V8 开发 Java EE 6 应用程序4

                

 

/**

* 由 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 所示。


清单 5. Criteria API

                

 

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 处理的代码,不在此赘述,请参阅附录的代码清单。

开发 Servlet 和 JSP

在 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 所示。


清单 6. AccountLogin Servlet 实现

                

 

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 及附录中的代码清单。


清单 7. AccountLogin JSP 实现

                

 

<!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 部署、运行 Account Login 程序

在 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 所示。


图 13. 添加新的 Server

点击 Next,填写指定的 WAS V8 Application Profile 的 SOAP 端口号,用于建立 RAD 与 WAS 的连接。如图 14 所示。

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营