stockservlet.java

来自「weblogic应用全实例」· Java 代码 · 共 82 行

JAVA
82
字号
//本类在包examples.xml.http中
package examples.xml.http;
//本类需要的其他类和包
import java.util.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ejb.*;
import javax.naming.*;
import examples.ejb.basic.statefulSession.*;
import org.xml.sax.SAXException;
import weblogic.servlet.XMLProcessingException;

/**
 * 这个例子演示了怎样在客户端和servlet之间通过http协议传输xml数据,这个类获取来自客户端程序
 * StockClient股票交易指令,这个指令是以xml格式的。
 */
public class StockServlet extends HttpServlet {

    /**
     * 处理 HTTP POST 请求
     *
     */
  public final void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException  {

    RequestHandler rh = new RequestHandler();

    try {
      request.setAttribute("org.xml.sax.HandlerBase", rh);
    } catch(XMLProcessingException xpe) {
      System.out.println("Error in processing XML");
      xpe.printStackTrace();
      return;
    } 
 
   java.util.Hashtable trade = rh.getData();

    if (! trade.isEmpty()) {
      try {
        // 创建一个 trader 对象
        Context ctx          =  new InitialContext();
        TraderHome brokerage = (TraderHome) ctx.lookup("statefulSession.TraderHome");


        Trader trader = brokerage.create();

        response.setContentType("text/xml");

        // 获取 writer.
        PrintWriter responseWriter = response.getWriter();
        responseWriter.println("<?xml version='1.0'?>");

        // 交易
        if (((String) trade.get("action")).equals("buy")) {
          TradeResult tr = trader.buy("Erin", (String) trade.get("symbol"), 
                             Integer.parseInt((String) trade.get("numShares")));

          // 发送结果
          responseWriter.println("<traderesult action='bought' symbol='"+
                                (String) trade.get("symbol")+"' numShares='"+ tr.getNumberTraded() +
                                "' price ='"+ tr.getPrice() +"' changeInAccount ='" + trader.getBalance() +"' />");
        } else if (((String) trade.get("action")).equals("sell")) {
          TradeResult tr = trader.sell("Erin", (String) trade.get("symbol"), 
                             Integer.parseInt((String) trade.get("numShares")));
          responseWriter.println("<traderesult action='sold' symbol='"+
                                (String) trade.get("symbol")+"' numShares='"+ tr.getNumberTraded() +
            "' price ='"+ tr.getPrice() +"' changeInAccount ='" + trader.getBalance() +"' />");
         }
        trader.remove();
      } catch (Exception e) {
        System.out.println(":::::::::::::: Error :::::::::::::::::");
        e.printStackTrace();
      }
    }
  }


}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?