«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

我近期在研究Maven、Turbine、EJB,如果有朋友想一起交流学习,请加我的MSN:moshco_zhu@hotmail.com!

   你为什么来,你何必来,叫我怎么见你!

--《小城之春》


我的分类(专题)

首页(19)
04 创想思考(1)
01 技术文档(8)
03 诗歌散文(1)
02 人生感悟(2)


最新日志
关于Java之父戈斯林离职的愤怒
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
用Maven2管理EJB项目

最新回复
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:用Maven2管理EJB项目
回复:在Weblogic 10中做EJB
回复:使用Continuum配置定时打包
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB

留言板
签写新留言



链接




本站首页    管理页面    写新日志    退出

[01 技术文档]在Weblogic 10中做EJB3的开发 之基础开发 (6)
moshco zhu 发表于 2007/11/7 15:01:26

在Weblogic 10中做EJB3的开发    之基础开发 (6) --------------------------------------------------------------------------- 5.访问EJB3  我们常用于访问EJB的可能有如下几种: 1.EJB调用远程或本地JVM的EJB; 2.Servlet访问远程或本地JVM的EJB; 3.普通Java类也可以调用远程JVM的EJB; 注意:这里的远程不一定是另外一台电脑。同一台电脑,如果一个是weblogic服务器,一个是运行中的普通Java类,它们也不是在同一个JVM中。  weblogic server中,EJB3提供的访问方式有: 1.使用标签配置JNDI,然后使用这个JNDI访问EJB对象; 2.在同一个JVM中,使用依赖注入的方式访问本地容器中的EJB对象; 3.在配置文件中引用EJB,然后使用JNDI访问。  下面我对各种访问方式分别做一个例子。  5.1 使用标签配置JNDI,然后使用这个JNDI访问EJB对象  这种访问方式是EJB3最明显的特性。正是因为大量使用标签,EJB3的开发才大大降低了繁琐度、难度,使开发一个EJB变得十分简单和有趣。  下面我们设想一种业务需求来完成这种访问方式的演示。 需求:用户账户有多条资金交易记录,现在把它查询列表显示,并提供每条记录的明细。 设计:设计一个EJB用来操作用户账户交易记录,实现两个功能:模糊查询显示列表,根据ID查询显示详细; 观察:EJB的JNDI采用标签配置。   第一要做的是创建数据库表,我是在MySQL中实现的,表的数据结构如下: 表名:[traderecord] ----------------------------------------------------------------------   字段  数据类型   编码类型 可否为空 默认值  自动增加  描述 ----------------------------------------------------------------------   Id  int(11)      否    auto_increment  记录编号   TradeType varchar(32)   gbk_bin  否       业务类型   TimeBegin datetime     否       开始时间   GoodsName varchar(256)   gbk_bin  是  NULL     货品名称   GoodsInfo varchar(1024)   gbk_bin  是  NULL     货品信息   Money  float      是  NULL     总金额   MoneyInfo varbinary(1024)     否       金额信息   TradePoint varchar(8) gbk_bin    否       交易方向   User  varbinary(64)     否       用户   Comrade varchar(64) gbk_bin    是  NULL     交易伙伴   State  varchar(8) gbk_bin    否       状态   Remark varchar(1024) gbk_bin    是  NULL     备注 ----------------------------------------------------------------------   我们创建两个业务Java Bean的类,这两个Bean类的主要作用是封装数据,数据格式标准化转换,这两个Java Bean类是继承一个基础Java Bean类。  基础Java Bean类。 文件地址:[Java/JavaSource/com/mh/javabean/CommondBean.java] 包路径:[com.mh.javabean] 名称:[CommondBean] ---------------------------------------------------------------------- /**  *   */ package com.mh.javabean;  import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;  /**  * @author moshco zhu  *   */ @SuppressWarnings("serial") public class CommondBean implements Serializable {   /**   * @描述:将Bean数组转化为XML字符串   * @param bean   * @return   * @throws InvocationTargetException   * @throws IllegalAccessException   * @throws IllegalArgumentException   */  public static String toXML(CommondBean[] aBean)    throws IllegalArgumentException, IllegalAccessException,    InvocationTargetException {    // 定义变量   String strResult = "";    // Bean数组对象不能为空   if (aBean == null) {    return "";   }    // xml头字符串   strResult += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";   strResult += "<beans name=\"TradeRecordList\">\n";   // 逐一处理数组中每一个Bean对象   for (int i = 0; i < aBean.length; i++) {    // 获取Bean对象    CommondBean bean = aBean[i];    strResult += bean.getBeanXML();   }   strResult += "</beans>";    // 返回函数值   return strResult;  }   /**   * @描述:将Bean对象转换为XML字符串   * @param bean   * @return   * @throws InvocationTargetException   * @throws IllegalAccessException   * @throws IllegalArgumentException   */  public static String toXML(CommondBean bean)    throws IllegalArgumentException, IllegalAccessException,    InvocationTargetException {    // 定义变量   String strResult = "";    // Bean数组对象不能为空   if (bean == null) {    return "";   }    // xml头字符串   strResult += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";   strResult += "<beans name=\"TradeRecordList\">\n";   // 获取Bean对象   strResult += bean.getBeanXML();   strResult += "</beans>";    // 返回函数值   return strResult;  }   /**   * @描述:获取Bean的XML字符串   * @return   * @throws InvocationTargetException   * @throws IllegalAccessException   * @throws IllegalArgumentException   */  public String getBeanXML() throws IllegalArgumentException,    IllegalAccessException, InvocationTargetException {    // 定义变量   String strResult = "";    // 获取Bean对象的字段数组   Field[] aFld = this.getClass().getDeclaredFields();   if (aFld == null || aFld.length == 0) {    return "";   }    // 获取Bean对象的方法数组   Method[] aMth = this.getClass().getDeclaredMethods();   if (aMth == null || aMth.length == 0) {    return "";   }    // 开始组合:执行每一个有get方法、set方法的字段   for (int i = 0; i < aFld.length; i++) {     // 获取字段的名称    String strFildName = aFld[i].getName();    String strNameGet = ("get" + strFildName).toLowerCase();    String strNameSet = ("set" + strFildName).toLowerCase();     // 寻找get、set方法的标识    boolean bGet = false;    boolean bSet = false;     // Get方法的位置    int iGet = -1;     // 搜索所有的方法    for (int j = 0; j < aMth.length; j++) {     // 匹配Get方法     if (strNameGet.equals(aMth[j].getName().toLowerCase())) {      bGet = true;      iGet = j;     }     // 匹配Set方法     if (strNameSet.equals(aMth[j].getName().toLowerCase())) {      bSet = true;     }     if (bGet && bSet) {      break;     }    }     // 组合XML字符串    if (bGet && bSet && iGet >= 0) {     strResult += "\t\t<field name=\"" + strFildName + "\">";     Object[] aO = null;     Object oResult = aMth[iGet].invoke(this, aO);     if (oResult != null) {      strResult += oResult.toString();     }     strResult += "</field>\n";    }   }      if(strResult != null && strResult.length() > 0){    strResult = "\t<bean>\n"+strResult+ "\t</bean>\n";   }    // 返回函数值   return strResult;  }  } ---------------------------------------------------------------------- 这个Bean类的作用,主要是将Bean类数据转换为XML字符串。它是一个Bean类的基础类,可以在这个类里面扩展一些JavaBean公用和基础的功能。 这里我们主要实现了三个功能:  public static String toXML(CommondBean[] aBean):将Bean对象数组转换为标准的XML文件格式字符串;  public static String toXML(CommondBean bean):将Bean对象转换为标准的XML文件格式字符串;  public String getBeanXML():将Bean本自己转换为标准XML字符串。  第一个Java Bean类。 文件地址:[Java/JavaSource/com/mh/ejb3/test/javabean/TradeRecord.java] 包路径:[com.mh.ejb3.test.javabean] 名称:[TradeRecord] 具体内容如下: ---------------------------------------------------------------------- /**  *   */ package com.mh.ejb3.test.javabean;  import java.io.Serializable; import java.sql.Timestamp;  import com.mh.javabean.CommondBean;  /**  * @author moshco zhu  *   */ @SuppressWarnings("serial") public class TradeRecord extends CommondBean {   private int Id = -1;   private String TradeType = null;   private Timestamp TimeBegin = null;   private String GoodsName = null;   private String GoodsInfo = null;   private String Money = null;   private String MoneyInfo = null;   private String TradePoint = null;   private String User = null;   private String Comrade = null;   private String State = null;   private String Remark = null;   /**   * @return remark   */  public String getRemark() {   return Remark;  }   /**   * @param remark   *            要设置的 remark   */  public void setRemark(String remark) {   Remark = remark;  }   /**   * @return comrade   */  public String getComrade() {   return Comrade;  }   /**   * @param comrade   *            要设置的 comrade   */  public void setComrade(String comrade) {   Comrade = comrade;  }   /**   * @return goodsInfo   */  public String getGoodsInfo() {   return GoodsInfo;  }   /**   * @param goodsInfo   *            要设置的 goodsInfo   */  public void setGoodsInfo(String goodsInfo) {   GoodsInfo = goodsInfo;  }   /**   * @return goodsName   */  public String getGoodsName() {   return GoodsName;  }   /**   * @param goodsName   *            要设置的 goodsName   */  public void setGoodsName(String goodsName) {   GoodsName = goodsName;  }   /**   * @return id   */  public int getId() {   return Id;  }   /**   * @param id   *            要设置的 id   */  public void setId(int id) {   Id = id;  }   /**   * @return money   */  public String getMoney() {   return Money;  }   /**   * @param money   *            要设置的 money   */  public void setMoney(String money) {   Money = money;  }   /**   * @return moneyInfo   */  public String getMoneyInfo() {   return MoneyInfo;  }   /**   * @param moneyInfo   *            要设置的 moneyInfo   */  public void setMoneyInfo(String moneyInfo) {   MoneyInfo = moneyInfo;  }   /**   * @return state   */  public String getState() {   return State;  }   /**   * @param state   *            要设置的 state   */  public void setState(String state) {   State = state;  }   /**   * @return timeBegin   */  public Timestamp getTimeBegin() {   return TimeBegin;  }   /**   * @param timeBegin   *            要设置的 timeBegin   */  public void setTimeBegin(Timestamp timeBegin) {   TimeBegin = timeBegin;  }   /**   * @return tradePoint   */  public String getTradePoint() {   return TradePoint;  }   /**   * @param tradePoint   *            要设置的 tradePoint   */  public void setTradePoint(String tradePoint) {   TradePoint = tradePoint;  }   /**   * @return tradeType   */  public String getTradeType() {   return TradeType;  }   /**   * @param tradeType   *            要设置的 tradeType   */  public void setTradeType(String tradeType) {   TradeType = tradeType;  }   /**   * @return user   */  public String getUser() {   return User;  }   /**   * @param user   *            要设置的 user   */  public void setUser(String user) {   User = user;  }  } ---------------------------------------------------------------------- TradeRecord类的主要作用是封装交易记录完整信息。  第二个Java Bean类。 文件地址:[Java/JavaSource/com/mh/ejb3/test/javabean/TradeRecordList.java] 包路径:[com.mh.ejb3.test.javabean] 名称:[TradeRecordList] 具体内容如下: ---------------------------------------------------------------------- /**  *   */ package com.mh.ejb3.test.javabean;  import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.Timestamp;  import com.mh.javabean.CommondBean;  /**  * @author moshco zhu  *   */ @SuppressWarnings("serial") public class TradeRecordList extends CommondBean{   private int Id = -1;   private String TradeType = null;   private Timestamp TimeBegin = null;   private String GoodsName = null;   private String Money = null;   private String TradePoint = null;   private String Comrade = null;   private String State = null;   /**   * @return comrade   */  public String getComrade() {   return Comrade;  }   /**   * @param comrade   *            要设置的 comrade   */  public void setComrade(String comrade) {   Comrade = comrade;  }   /**   * @return goodsName   */  public String getGoodsName() {   return GoodsName;  }   /**   * @param goodsName   *            要设置的 goodsName   */  public void setGoodsName(String goodsName) {   GoodsName = goodsName;  }   /**   * @return id   */  public int getId() {   return Id;  }   /**   * @param id   *            要设置的 id   */  public void setId(int id) {   Id = id;  }   /**   * @return money   */  public String getMoney() {   return Money;  }   /**   * @param money   *            要设置的 money   */  public void setMoney(String money) {   Money = money;  }   /**   * @return state   */  public String getState() {   return State;  }   /**   * @param state   *            要设置的 state   */  public void setState(String state) {   State = state;  }   /**   * @return timeBegin   */  public Timestamp getTimeBegin() {   return TimeBegin;  }   /**   * @param timeBegin   *            要设置的 timeBegin   */  public void setTimeBegin(Timestamp timeBegin) {   TimeBegin = timeBegin;  }   /**   * @return tradePoint   */  public String getTradePoint() {   return TradePoint;  }   /**   * @param tradePoint   *            要设置的 tradePoint   */  public void setTradePoint(String tradePoint) {   TradePoint = tradePoint;  }   /**   * @return tradeType   */  public String getTradeType() {   return TradeType;  }   /**   * @param tradeType   *            要设置的 tradeType   */  public void setTradeType(String tradeType) {   TradeType = tradeType;  }  } ---------------------------------------------------------------------- TradeRecordList类的作用主要是封装交易记录用来列表显示的信息。  到这里已经完成了数据模型的创建,接下来创建数据操作层DAO类。  创建DAO类。 文件地址:[Java/JavaSource/com/mh/dao/test/TradeRecordDAO.java] 包名:[com.mh.dao.test] 名称:[TradeRecordDAO] 内容如下: ---------------------------------------------------------------------- /**  *   */ package com.mh.dao.test;  import java.io.Serializable; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;  import javax.sql.DataSource;  import com.mh.ejb3.test.javabean.TradeRecord; import com.mh.ejb3.test.javabean.TradeRecordList; import com.mh.util.DSUtil;  /**  * @author moshco zhu  *   */ @SuppressWarnings("serial") public class TradeRecordDAO implements Serializable {   /**   * @描述:定义成员变量   *    */  private DataSource ds = null;   private Connection conn = null;   /**   * @描述:构造函数   *    */  public TradeRecordDAO() {    // 获取数据源   try {     // 获取数据源对象    ds = DSUtil.getDSObject("mysql_ejb31");    // 获取数据库连接    conn = ds.getConnection();   } catch (Exception e) {    e.printStackTrace();   }   }   /**   * @描述:获取指定的Bean对象   * @param iId   * @return   */  public TradeRecord findTradeRecord(int iId) {    // 获取数据源   TradeRecord bean = null;    try {     // 查询数据    String strSQL = "";    strSQL += "select ";    strSQL += "  Id,";    strSQL += "  TradeType,";    strSQL += "  TimeBegin,";    strSQL += "  GoodsName,";    strSQL += "  GoodsInfo,";    strSQL += "  Money,";    strSQL += "  MoneyInfo,";    strSQL += "  TradePoint,";    strSQL += "  User,";    strSQL += "  Comrade,";    strSQL += "  State,";    strSQL += "  Remark ";    strSQL += "from ";    strSQL += "  TradeRecord ";    strSQL += "where ";    strSQL += "  Id = ?";    PreparedStatement psta = conn.prepareStatement(strSQL);    psta.setInt(1, iId);    ResultSet rs = psta.executeQuery();     // 获取结果    while (rs.next()) {     // 创建Bean对象     bean = new TradeRecord();     bean.setId(rs.getInt("Id"));     bean.setTradeType(rs.getString("TradeType"));     bean.setTimeBegin(rs.getTimestamp("TimeBegin"));     bean.setGoodsName(rs.getString("GoodsName"));     bean.setGoodsInfo(rs.getString("GoodsInfo"));     bean.setMoney(rs.getString("Money"));     bean.setMoneyInfo(rs.getString("MoneyInfo"));     bean.setTradePoint(rs.getString("TradePoint"));     bean.setUser(rs.getString("User"));     bean.setComrade(rs.getString("Comrade"));     bean.setState(rs.getString("State"));     bean.setRemark(rs.getString("Remark"));     // 中断     break;    }    } catch (Exception e) {    e.printStackTrace();   } finally {    try {     if (conn != null && !conn.isClosed()) {      conn.close();      conn = null;     }    } catch (SQLException e) {     e.printStackTrace();    }    ds = null;   }    // 返回函数值   return bean;  }   @SuppressWarnings("unchecked")  public TradeRecordList[] queryUnsharp(String strKeyWord) {    // 获取数据源   List lstTradeRecord = new ArrayList();   TradeRecordList bean = null;   TradeRecordList[] aBean = null;    try {     // 查询数据    String strSQL = "";    strSQL += "select ";    strSQL += "  Id,";    strSQL += "  TradeType,";    strSQL += "  TimeBegin,";    strSQL += "  GoodsName,";    strSQL += "  Money,";    strSQL += "  TradePoint,";    strSQL += "  Comrade,";    strSQL += "  State ";    strSQL += "from ";    strSQL += "  TradeRecord ";    strSQL += "where ";    strSQL += "  GoodsName like concat('%',concat(?,'%'))";    strSQL += "  or Comrade like concat('%',concat(?,'%'))";    PreparedStatement psta = conn.prepareStatement(strSQL);    psta.setString(1, strKeyWord);    psta.setString(2, strKeyWord);    ResultSet rs = psta.executeQuery();     // 获取结果    while (rs.next()) {     // 创建Bean对象     bean = new TradeRecordList();     bean.setId(rs.getInt("Id"));     bean.setTradeType(rs.getString("TradeType"));     bean.setTimeBegin(rs.getTimestamp("TimeBegin"));     bean.setGoodsName(rs.getString("GoodsName"));     bean.setMoney(rs.getString("Money"));     bean.setTradePoint(rs.getString("TradePoint"));     bean.setComrade(rs.getString("Comrade"));     bean.setState(rs.getString("State"));     // 加入数组     lstTradeRecord.add(bean);    }     // 转换为数组    if (lstTradeRecord != null && lstTradeRecord.size() > 0) {     aBean = new TradeRecordList[lstTradeRecord.size()];     aBean = (TradeRecordList[]) lstTradeRecord.toArray(aBean);    }    } catch (Exception e) {    e.printStackTrace();   } finally {    try {     if (conn != null && !conn.isClosed()) {      conn.close();      conn = null;     }    } catch (SQLException e) {     e.printStackTrace();    }    ds = null;   }    // 返回函数值   return aBean;  } }  ---------------------------------------------------------------------- 这个DAO类实现的功能主要是: public TradeRecordDAO():构造函数,用来获取数据源,DSUtil类的内容在上一篇文件中已经讲过了。需要注意的是数据源JNDI[mysql_ejb31]的配置大家要根据实际情况来写。 public TradeRecord findTradeRecord(int iId):根据记录Id,查找相关Bean对象。 public TradeRecordList[] queryUnsharp(String strKeyWord):通过关键字查询所有服务要求的Bean对象列表。  下面介绍业务逻辑层的编写。  首先编写EJB。 接口类。  文件地址:[EJB3/JavaSource/com/mh/ejb3/test/labeljndi/TradeRecordManage.java] 包名:[com.mh.ejb3.test.labeljndi] 名称:[TradeRecordManage] 内容如下: ---------------------------------------------------------------------- /**  *   */ package com.mh.ejb3.test.labeljndi;  import com.mh.ejb3.test.javabean.TradeRecord; import com.mh.ejb3.test.javabean.TradeRecordList;  /**  * @author moshco zhu  *   */ public interface TradeRecordManage {   public TradeRecordList[] queryUnsharp(String strKeyWord);   public TradeRecord findTradeRecord(int iId);  } ----------------------------------------------------------------------   文件地址:[EJB3/JavaSource/com/mh/ejb3/test/labeljndi/TradeRecordManageBean.java] 包名:[com.mh.ejb3.test.labeljndi] 名称:[TradeRecordManageBean] EJB类型:无状态会话Bean 实现业务接口:远程接口 内容如下: ---------------------------------------------------------------------- /**  *   */ package com.mh.ejb3.test.labeljndi;  import javax.ejb.Remote; import javax.ejb.Stateless;  import com.mh.dao.test.TradeRecordDAO; import com.mh.ejb3.test.javabean.TradeRecord; import com.mh.ejb3.test.javabean.TradeRecordList;  /**  * @author moshco zhu  *   */ @Stateless(mappedName = "TradeRecordManageBean") @Remote(TradeRecordManage.class) public class TradeRecordManageBean implements TradeRecordManage {   /*   * (非 Javadoc)   *    * @see com.mh.ejb3.test.labeljndi.TradeRecordManage#findTradeRecord(int)   */  public TradeRecord findTradeRecord(int iId) {    // 创建DAO对象   TradeRecordDAO dao = new TradeRecordDAO();    // 实现业务操作   TradeRecord bean = dao.findTradeRecord(iId);    // 返回函数值   return bean;  }   /*   * (非 Javadoc)   *    * @see com.mh.ejb3.test.labeljndi.TradeRecordManage#queryUnsharp(java.lang.String)   */  public TradeRecordList[] queryUnsharp(String strKeyWord) {    // 创建DAO对象   TradeRecordDAO dao = new TradeRecordDAO();    // 实现业务操作   TradeRecordList[] aBean = dao.queryUnsharp(strKeyWord);    // 返回函数值   return aBean;  }  } ---------------------------------------------------------------------- EJB实现了两个功能:[findTradeRecord]和[findTradeRecord],一个是显示详细Bean数据,一个是显示模糊查询的列表。 需要注意的是,我们这里采用的是通过注解来定义EJB的JNDI,根据[@Stateless(mappedName = "TradeRecordManageBean")],我们可以确定JNDI应该是[TradeRecordManageBean@com.mh.ejb3.test.labeljndi.TradeRecordManage],[@]后面的部分是EJB的接口全名称。  接下来我们编写,逻辑控制层Servlet的代码。 文件地址:[WebContext/JavaSource/com/mh/servlet/test/pay/TradeRecordSV.java] 包名:[com.mh.servlet.test.pay] 名称:[TradeRecordSV] 内容如下: ---------------------------------------------------------------------- /**  *   */ package com.mh.servlet.test.pay;  import java.io.IOException; import java.io.PrintWriter;  import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import com.mh.ejb3.test.javabean.TradeRecord; import com.mh.ejb3.test.javabean.TradeRecordList; import com.mh.ejb3.test.labeljndi.TradeRecordManage; import com.mh.util.EJBUtil;  /**  * @author moshco zhu  *   */ @SuppressWarnings("serial") public class TradeRecordSV extends HttpServlet {   @Override  public void init() throws ServletException {   // TODO 自动生成方法存根   super.init();  }   @Override  public void destroy() {   // TODO 自动生成方法存根   super.destroy();  }   @Override  protected void doGet(HttpServletRequest request,    HttpServletResponse response) throws ServletException, IOException {   doWork(request, response);  }   @Override  protected void doPost(HttpServletRequest request,    HttpServletResponse response) throws ServletException, IOException {   doWork(request, response);  }   /**   * @描述:公共处理方法   *    * @param strJNDI   * @return   * @throws Excep   */  private void doWork(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {    // 获取输出对象   request.setCharacterEncoding("UTF-8");   response.setCharacterEncoding("UTF-8"); // 设置输出编码   response.setContentType("text/XML;charset=UTF-8");   PrintWriter out = response.getWriter();   // 结果值   String message = "Test:<br><hr size='1'>";    try {     // 获取参数    String strPara = (String) request.getParameter("dowith");     if (strPara != null && strPara.equals("queryUnsharp")) {      // 通过JNDI获取EJB对象     TradeRecordManage ejbDB = (TradeRecordManage) EJBUtil       .getEJBObject("TradeRecordManageBean#com.mh.ejb3.test.labeljndi.TradeRecordManage");      // 模糊查询     String strKeyWord = request.getParameter("keyword");     TradeRecordList[] aBean = ejbDB.queryUnsharp(strKeyWord);      // Bean数组转换为XML字符串     message = TradeRecordList.toXML(aBean);     } else if (strPara != null && strPara.equals("findTradeRecord")) {      // 通过JNDI获取EJB对象     TradeRecordManage ejbDB = (TradeRecordManage) EJBUtil       .getEJBObject("TradeRecordManageBean#com.mh.ejb3.test.labeljndi.TradeRecordManage");      // 查询Bean对象     int iId = Integer.parseInt(request.getParameter("id"));     TradeRecord bean = ejbDB.findTradeRecord(iId);      // Bean数组转换为XML字符串     message = TradeRecord.toXML(bean);     }    } catch (Exception e) {    e.printStackTrace();    message += e.toString();   } finally {   }    // 输出   out.print(message);   out.flush();   out.close();  }  } ---------------------------------------------------------------------- 上面的Servlet中,我们提交请求后返回的是XML标准文件字符串,主要是通过基础Bean类的[toXML]方法来转换的,之所以把他转换为XML字符串,是因为在js中可以使用不同的样式表来显示不同的样式。需要提醒一下的是,上面有一段是这样写的[response.setContentType("text/XML;charset=UTF-8");],这是在告诉Servlet返回数据类型应该是text和xml格式,如果是HTML格式应该写成:[response.setContentType("text/html;charset=UTF-8");]。  因为创建了新的Servlet,所以,我们要在[web.xml]中加以定义。 打开文件[WebContext/WEB-INF/web.xml],添加下面这段: ----------------------------------------------------------------------  <!-- 定义一个Servlet -->  <servlet>   <servlet-name>TradeRecordSV</servlet-name>   <servlet-class>    com.mh.servlet.test.pay.TradeRecordSV   </servlet-class>   <load-on-startup>4</load-on-startup>  </servlet>  <servlet-mapping>   <servlet-name>TradeRecordSV</servlet-name>   <url-pattern>/sv/TradeRecordSV.do</url-pattern>  </servlet-mapping> ----------------------------------------------------------------------  

阅读全文(3234) | 回复(0) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.249 second(s), page refreshed 144768780 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号