weblogic ejb3 入门与提高(六)

本文介绍了一个基于JSP和XSLT实现的交易记录查询系统,通过Ajax进行数据交互,并利用XSLT将XML数据转换为HTML显示。此外,还讨论了在WebLogic Server环境中使用依赖注入方式访问EJB对象的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------------------------------------------------------------
 
 好了,现在可以编写表示层的代码了。
 文件地址:[WebContext/test/trade_record.jsp]
 内容如下:
 ----------------------------------------------------------------------
 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <title>测试-交易记录</title>
 </head>
 <script language="javascript" type="text/javascript">

  /**
   * 函数名: getSysAliasAss
   * 功能描述: 获取运行系统别名(辅助)
   */
  function getSysAliasAss(){
   
   //读取系统当前请求的pathName
   var strPathName = window.location.pathname;
   
   //以字符串"/"分割到数组
   var oAryTmp = strPathName.split("/");
   //系统别名
   var strSysAlias = "/" + oAryTmp[1];
   
   //返回函数值
   return strSysAlias;
   
  }
  
  
  
  /*
   * 函数名称: getDocXML
   * 功能:  数据文档对象
   *
   */
  function getDocXML(strXMLUrl){
   var oXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
   oXMLDoc.async = false;
   oXMLDoc.load(strXMLUrl);
   //返回函数值
   return oXMLDoc;
  }
  
  

  /**
   * 函数名: queryUnsharp
   * 功能描述: 模糊查询
   */
  function queryUnsharp(){
   
   //创建Ajax对象
   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");
   
   //获取查询关键字
   var strKeyword = keyword.value;
   
   //确定请求的Url
   var strUrl = getSysAliasAss() + "/sv/TradeRecordSV.do?dowith=queryUnsharp&keyword=" + strKeyword;
     
   //发出请求
   xmlHttpReq.open("GET", strUrl, false);
   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");
   xmlHttpReq.send();
     
   //读取数据
   var oXML = xmlHttpReq.responseXML;
   //alert(xmlHttpReq.responseText);

   //样式表文档对象
   var strXMLUrl = getSysAliasAss() + "/xml/lstTradeRecord.xsl";
   var oXSL = getDocXML(strXMLUrl);
   
   //转换为HTML代码
   var strHTML = oXML.transformNode(oXSL);
   //装载HTML
   lstTradeRecord.innerHTML = strHTML;
   detailTradeRecord.innerHTML ="";
   //alert(strHTML);
   
   //返回函数值
   return oXML;
  }
  
  
  /**
   * 函数名: findTradeRecord
   * 功能描述: 模糊查询
   */
  function findTradeRecord(iId){
   
   //alert("[" + iId + "]");
   
   if(iId == null || iId < 0){
    return ;
   }
   
   //创建Ajax对象
   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");
   
   //确定请求的Url
   var strUrl = getSysAliasAss() + "/sv/TradeRecordSV.do?dowith=findTradeRecord&id=" + iId;
     
   //发出请求
   xmlHttpReq.open("GET", strUrl, false);
   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");
   xmlHttpReq.send();
     
   //读取数据
   var oXML = xmlHttpReq.responseXML;
   //alert(xmlHttpReq.responseText);

   //样式表文档对象
   var strXMLUrl = getSysAliasAss() + "/xml/detailTradeRecord.xsl";
   var oXSL = getDocXML(strXMLUrl);
   
   //转换为HTML代码
   var strHTML = oXML.transformNode(oXSL);
   //装载HTML
   detailTradeRecord.innerHTML = strHTML;
   
   //返回函数值
   return oXML;
  }

 </script>

 <body>
 <p>使用标签配置JNDI:<br />
 </p>
 <hr width="100%" size="1" />
 </p>
 <table width="800" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
   <tr>
     <td bgcolor="#FFFFFF"><table width="100%" border="0" cellspacing="1" cellpadding="0">
       <tr>
  <td height="20" bgcolor="#CCCCCC">交易记录列表</td>
  </tr>
       <tr>
  <td height="20"><hr width="100%" size="1" />        </td>
  </tr>
       <tr>
  <td height="40" align="center"><p>查询内容:
      <input name="keyword" type="text" id="keyword" size="40" />
        <input name="query" type="button" id="query" value="查询" onclick="queryUnsharp();" />
   </p>
    <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
      <tr>
        <td height="20" bgcolor="#FFFFFF" >
      <span id="lstTradeRecord"></span>     </td>
      </tr>
    </table>
    <p>&nbsp;</p>         
     </td>
  </tr>
       <tr>
  <td height="40" align="center" valign="top">
   <span id="detailTradeRecord"></span>
   </td>
  </tr>
     </table>
     <p>&nbsp;</p></td>
   </tr>
 </table>
 </body>
 </html>
 ----------------------------------------------------------------------
 
 下面是两个必要的样式表文件。

 文件地址:[WebContext/xml/detailTradeRecord.xsl]
 ----------------------------------------------------------------------
 <?xml version="1.0" encoding="UTF-8"?>

 <?xml version="1.0" encoding="UTF-8"?>

 <xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">

   <table width="50%" border="0" cellspacing="0" cellpadding="0">
    <xsl:for-each select="beans/bean/field">
     <xsl:sort data-type="number" order="ascending"
      select="@IndexOrder" /><!-- ascending descending  -->

     <tr>
      <td width="35%" height="20" align="left">
       <xsl:if test="@name = 'Id'">
        <xsl:text disable-output-escaping="yes">
         编号&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'TradeType'">
        <xsl:text disable-output-escaping="yes">
         交易类型&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'TimeBegin'">
        <xsl:text disable-output-escaping="yes">
         开始时间&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'GoodsName'">
        <xsl:text disable-output-escaping="yes">
         货品名称&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'GoodsInfo'">
        <xsl:text disable-output-escaping="yes">
         货品信息&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'Money'">
        <xsl:text disable-output-escaping="yes">
         总金额&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'MoneyInfo'">
        <xsl:text disable-output-escaping="yes">
         金额相关信息&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'TradePoint'">
        <xsl:text disable-output-escaping="yes">
         交易方向&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'User'">
        <xsl:text disable-output-escaping="yes">
         用户&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'Comrade'">
        <xsl:text disable-output-escaping="yes">
         交易伙伴&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'State'">
        <xsl:text disable-output-escaping="yes">
         状态&amp;nbsp;
        </xsl:text>
       </xsl:if>
       <xsl:if test="@name = 'Remark'">
        <xsl:text disable-output-escaping="yes">
         备注&amp;nbsp;
        </xsl:text>
       </xsl:if>


      </td>
      <td width="3%">
       <xsl:text disable-output-escaping="yes">
        &amp;nbsp;
       </xsl:text>
      </td>
      <td width="62%" align="left">
       <xsl:value-of select="." />
       <xsl:text disable-output-escaping="yes">
        &amp;nbsp;
       </xsl:text>
      </td>
     </tr>

    </xsl:for-each>
   </table>

  </xsl:template>
 </xsl:stylesheet>
 ----------------------------------------------------------------------

 文件地址:[WebContext/xml/lstTradeRecord.xsl]
 ----------------------------------------------------------------------
 <?xml version="1.0" encoding="UTF-8"?>

 <xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">

   <table width="100%" border="0" cellspacing="0"
    cellpadding="0">

    <tr>
     <td height="20" bgcolor="#FFFF33">交易类型</td>
     <td height="20" bgcolor="#FFFF33">开始时间</td>
     <td height="20" bgcolor="#FFFF33">货品名称</td>
     <td height="20" bgcolor="#FFFF33">总金额</td>
     <td height="20" bgcolor="#FFFF33">交易方向</td>
     <td height="20" bgcolor="#FFFF33">交易伙伴</td>
     <td height="20" bgcolor="#FFFF33">状态</td>
     <td height="20" bgcolor="#FFFF33">操作</td>
    </tr>

    <xsl:for-each select="beans/bean">
     <xsl:sort data-type="number" order="ascending"
      select="@IndexOrder" /><!-- ascending descending  -->

     <tr>
      <xsl:for-each select="field">
       <xsl:if test="@name != 'Id'">
        <td height="20" bgcolor="#FFFFFF">
         <xsl:value-of select="." />
         <xsl:text
          disable-output-escaping="yes">
          &amp;nbsp;
         </xsl:text>
        </td>
       </xsl:if>
      </xsl:for-each>
      <td height="20" bgcolor="#FFFFFF">
       <input name="findTradeRecord" type="button"
        id="findTradeRecord" value="详细">
        <xsl:attribute name="onclick">findTradeRecord(<xsl:value-of select="field[1]" />);</xsl:attribute>
       </input>
      </td>
     </tr>

    </xsl:for-each>

    <xsl:if test="count(beans/bean)=0">
     <tr>
      <td height="30" bgcolor="#FFFFFF" colspan="7">
       <font color="red">没有找到数据!</font>
       <xsl:text disable-output-escaping="yes">
        &amp;nbsp;
       </xsl:text>
      </td>
     </tr>
    </xsl:if>

   </table>

  </xsl:template>
 </xsl:stylesheet>
 ----------------------------------------------------------------------

 好了,到此,可以编译发布了!

 


 5.2 在同一个JVM中,使用依赖注入的方式访问本地容器中的EJB对象

 现在我需要强调一点的是:在weblogic server中,如果你的servlet采用依赖注入(DI)的方式访问本地JVM中的EJB,必须要注意的是,web.xml中根节点[web-app]的属性[version]一定要等于[2.5]或者更高的版本,比如像写成下面这样:
 ----------------------------------------------------------------------
 <web-app version="2.5">
 ----------------------------------------------------------------------
 这里,需要提醒一点的是,我们之前写成:
 ----------------------------------------------------------------------
 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 ----------------------------------------------------------------------
 它是不支持servlet中使用依赖注入的方式访问EJB3的。

 还有一点就是:依赖注入只能注入本地服务器的对象,不能注入远程服务器的对象。

 可以去这里参考一下:[http://edocs.bea.com.cn/wls/docs100/webapp/annotateservlet.html]

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值