正 文

NetBeans IDE4.1 J2EE应用程序快速入门指南


www.7dspace.com  更新日期:2005-12-30 7:39:58  七度空间


       对会话 Bean 进行编码

      现在,我们将创建一个会话 Bean,用来处理 Web 应用程序客户机对实体 Bean 中的信息的访问。我们将创建一个空会话 Bean,生成对实体 Bean 的调用,然后添加一些业务方法。

      在“项目”窗口中,右键单击 CustomerBook-EJBModule 项目节点,然后选择“新建”>“会话 Bean”。将该会话 Bean 命名为 CustomerFacade,并将其放在 ejb 包中。将 Bean 设置为无态 Bean,并且只有远程接口。然后单击“完成”。IDE 将创建此 Bean,并在源编辑器中打开其 Bean 类。

       右键单击 Bean 类主体中的任意位置,选择“企业资源”>“调用 Enterprise Bean”。选择 CustomerTblEB Bean,然后单击“确定”。IDE 将在源文件的底部生成 lookupCustomerTbl 方法。

        将以下内容添加到 Bean 类起始位置的变量声明中:

private ejb.CustomerTblLocalHome custHome;

        现在,我们将在会话 Bean 的 create 方法中获取对实体 Bean 的 Home 接口的引用。删除 ejbCreate() 中的注释并添加以下语句:

custHome = lookupCustomerTblBean();

        右键单击 Bean 类主体中的任意位置,选择“EJB 方法”>“添加业务方法”。指定以下信息:

 元素  值
 方法名  getCustomerInfo
 返回类型  String
 参数   int custId
 异常  javax.ejb.FinderException

在源源编辑器中,按如下内容编辑 getCustomerInfo 业务方法:

public String getCustomerInfo(int custId) throws javax.ejb.FinderException {
   ejb.CustomerTblLocal customer = custHome.findByPrimaryKey(new Integer(custId));
   return "Name: " + customer.getName() + ", E-mail: " +customer.getEmail();
}

最终的 CustomerFacadeBean.java 文件应如此处所示。

       对 Web 模块进行编码

       现在,我们需要对 Web 模块进行编码,该模块将为实体 Bean 提供用户接口。Web 模块包含一个 Servlet,允许用户按客户编号对客户进行搜索。

       创建定制服务定位器

       在上一部分中,我们在调用 Enterprise Bean 时通过 IDE 生成了内联查找代码。在本部分中,我们将创建一个定制服务定位器,IDE 将在生成对 Enterprise Bean 的调用时用到它。我们的服务定位器没有任何特殊功能,但您可以定制企业应用程序查找 Enterprise Bean 的方式。

       在“项目”窗口中,右键单击 CustomerBook-WebModule 节点,然后选择“新建”>“文件/文件夹”。在向导中,从“企业”类别中选择服务定位器模板。单击“下一步”。

       键入 ServiceLocator 作为类名,键入 Web 作为包,然后单击“完成”。

       对 Servlet 进行编码

      在最后的步骤中,我们将向 Web 模块添加一个 Servlet,通过它可以查找并显示 CUSTOMER_TBL 表中的每个客户的信息。

在“项目”窗口中,右键单击 CustomerBook-WebModule 节点,然后选择“新建”> "Servlet"。将 Servlet 命名为 CustomerDetail,然后将其放在 web 包中。

在源编辑器中,右键单击 Servlet 类主体中的任意位置,选择“企业资源”>“调用 Enterprise Bean”。选择 CustomerFacade 会话 Bean,将 web.ServiceLocator 类设置为服务定位器策略,然后单击“确定”。IDE 将插入该查找方法。

按如下所示编辑 processRequest 方法:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();
   out.println("<html>");
   out.println("<head>");
   out.println("<title>Servlet customerDetail</title>");
   out.println("</head>");
   out.println("<body>");
   out.println("<h1>Servlet customerDetail at " + request.getContextPath () + "</h1>");

   String customerNr = request.getParameter("customer_nr");
   if((customerNr != null) && !(customerNr.equals("")))
   {
   try{
   ejb.CustomerFacadeRemote custFacade = lookupCustomerFacadeBean();
   out.println("Customer's info for nr. " + customerNr + ": " + custFacade.getCustomerInfo(
                    Integer.parseInt(customerNr)));
   }catch(javax.ejb.FinderException ex){
       out.println("Customer with nr. " + customerNr +" not found");
     }
   }

   out.println("<form>");
   out.println("Customer number: <input type='text' name='customer_nr' />");
   out.println("<input type=submit value=Select />");
   out.println("</form>");

   out.println("</body>");
   out.println("</html>");
   out.close();
}

最终的 CustomerDetail.java Servlet 应如此处所示。

4页,页码:[1] [2] [3] [4] 

上一篇:利用VC++动态改变Windows的显示特性
下一篇:在NetBeans IDE 4.1中导入J2EE应用程序
作者:  来源:netbeans.org ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐