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 + -
显示快捷键?