Java用POST传对象给Servlet

本文介绍了如何通过Java类调用Servlet来优化BlazeDS的实时推送功能,避免了资源浪费,并提供了POST方法传对象的发送实例。

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

为了实现BlazeDS的实时推送功能,找到了个用Servlet实现的例子。但是例子采用的是线程每秒推送,这样有些浪费资源。

搜了很久,也没找到Java类里调用Servlet的例子,只好用Post方法传对象。

 

发送POST的例子在 : http://lodachi.iteye.com/?show_full=true

 

 

 

package dbConn;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import bean.Tick;
import flex.messaging.util.URLEncoder;

public class TestAction {

	public static void main(String[] args) throws Exception{
		TestAction test = new TestAction();
		test.test();
	}
	public void test() throws Exception {
		URL url = new URL("http://localhost:8080/HRC/servlet/DataPushServlet");
		HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

		urlConn.setDoOutput(true);
		urlConn.setDoInput(true);
		urlConn.setUseCaches(false);
		urlConn.setRequestProperty("Content-type","application/x-java-serialized-object");
		urlConn.setRequestMethod("POST");
		urlConn.connect();

		OutputStream outStrm = urlConn.getOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(outStrm);

		Tick tick  = new Tick();
		oos.writeObject(tick);

		oos.flush();
		oos.close();

		InputStream inStrm = urlConn.getInputStream();
	}
}

 

 

package servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.Tick;

import flex.messaging.MessageBroker;
import flex.messaging.messages.AsyncMessage;
import flex.messaging.util.UUIDUtils;

public class DataPushServlet extends HttpServlet {

	public DataPushServlet() {
		super();
	}

	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//System.out.println("doGet");
		doPost(request,response);		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("doPost");
		InputStream in = request.getInputStream();
		ObjectInputStream ois = new ObjectInputStream(in);
		
		try{
			Tick tick = (Tick)(ois.readObject());
			System.out.println(tick.getAskPrice());
			System.out.println(tick.getBidPrice());
			System.out.println(tick.getMidPrice());
		}catch(Exception e){}
	}
	public void push(String para){
		MessageBroker msgBroker = MessageBroker.getMessageBroker(null);   
        String clientID = UUIDUtils.createUUID();  
        
//        Tick tick = new Tick();   
//        tick.setAskPrice(new BigDecimal("100"));   
//        tick.setBidPrice(new BigDecimal("100"));   
//        tick.setMidPrice(new BigDecimal("100"));   
//        tick.setTickTime(new Date());   
//
//        tick.setSeqno(name);   

        AsyncMessage msg = new AsyncMessage();   
        msg.setDestination("tick-data-feed");   
        msg.setHeader("DSSubtopic", "tick");   
        msg.setClientId(clientID);   
        msg.setMessageId(UUIDUtils.createUUID());   
        msg.setTimestamp(System.currentTimeMillis());   
        msg.setBody(para);   
        msgBroker.routeMessageToService(msg, null);   
	}
}

 

 

package bean;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

public class Tick implements Serializable {
    private String askPrice = "aaaaaaaa";

    private String bidPrice = "bbbbbbbb";

    private String midPrice = "cccccccc";
..........

}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值