日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 后台输出_将后台输出动态打输出到前台并且显示

發(fā)布時(shí)間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 后台输出_将后台输出动态打输出到前台并且显示 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我想把如:

for(int i,i<1000,i++)

System.out.println("內(nèi)容")

這段代碼會(huì)輸出1000個(gè)“內(nèi)容”,我想把它輸出的內(nèi)容實(shí)時(shí)的返回給ie并且顯示。也就是說客戶端調(diào)用一個(gè)action然后action會(huì)在控制臺(tái)中打印1000個(gè)“內(nèi)容”,我想要的就是:把這打印1000個(gè)“內(nèi)容”顯示的過程放到ie上去!就是我想讓ie變成和控制臺(tái)一樣!可以打印后臺(tái)的輸出,而且是實(shí)時(shí)的!

用什么技術(shù),或者是什么辦法告訴我就行!有代碼最好了!先謝謝各位了!

問題補(bǔ)充:我的意思是實(shí)時(shí)動(dòng)態(tài)的這樣還是靜態(tài)的啊!必須得等后臺(tái)執(zhí)行完畢,前臺(tái)才能顯示的 啊!!!!

高級(jí)java工程師 寫道

你把放進(jìn)request中,頁面從request獲取,你操作頁面的時(shí)候就會(huì)執(zhí)行

for(int i,i<1000,i++)

System.out.println("內(nèi)容")

System.out.println("內(nèi)容")他會(huì)被調(diào)用,打印

問題補(bǔ)充:嗯!

AngelAndAngel 寫道

我懂你意思了,你用dwr吧,在你action里面打印的時(shí)候,調(diào)用dwr的方法,可以在你指定的jsp中,打印出任何東西。你搜dwr反推技術(shù)。我這有例子,但是太大,沒有剝離,等你下載了dwr后不懂的再說

問題補(bǔ)充:后臺(tái)輸出了一條但是你取了兩次這樣你就會(huì)得到兩條相同的數(shù)據(jù)了,所以這個(gè)方法不可行!呵呵,但還是謝謝了!

FAvril 寫道

我只想到一個(gè)比較粗略的

前臺(tái)用一個(gè)定時(shí)器隔一小小段時(shí)間發(fā)Ajax請(qǐng)求到后臺(tái),然后將請(qǐng)求的內(nèi)容打印

問題補(bǔ)充:感謝大家的回答:

問題已經(jīng)解決了:

如下:

服務(wù)器代碼:

package JSocket;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

public class Server {

private static final int PORT = 3000; // 端口號(hào)

private static List list = new ArrayList(); // 保存連接對(duì)象

private ExecutorService exec;

private ServerSocket server;

public static void main(String[] args) {

new Server();

}

public Server() {

try {

server = new ServerSocket(PORT);

exec = Executors.newCachedThreadPool();

System.out.println("服務(wù)器已啟動(dòng)!");

Socket client = null;

while (true) {

client = server.accept(); // 接收客戶連接

list.add(client);

exec.execute(new ChatTask(client));

}

} catch (IOException e) {

e.printStackTrace();

}

}

static class ChatTask implements Runnable {

private Socket socket;

private BufferedReader br;

private String msg="";

private String msg1="";

public ChatTask(Socket socket) throws IOException {

this.socket = socket;

br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

}

public void run() {

new Thread(new Runnable() {

public void run() {

PrintWriter pw;

try {

pw = new PrintWriter(socket.getOutputStream(), true);

int i=0;

while(true){

msg="\0";

msg1=i+"你好!";

if(i==0){//如果客戶端是第一次訪問服務(wù)器那么發(fā)送,安全策略允許文件,這必須的否則其余的免談

pw.println(msg);

pw.flush();

}

else{//向客戶端發(fā)送數(shù)據(jù)

pw.println(msg1);

pw.flush();

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

i++;

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start();

}

}

}

客戶端代碼:

xmlns:s="library://ns.adobe.com/flex/spark"

xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" applicationComplete="init()">

import mx.controls.Alert;

import mx.rpc.events.FaultEvent;

import mx.rpc.events.ResultEvent;

import mx.rpc.http.HTTPService;

private var socket:Socket=new Socket();

[Bindable]

public var ip:String;

[Bindable]

public var port:int;

private function init():void{

getIpPort();

}

private function getIpPort():void{

var configService:HTTPService=new HTTPService();

configService.url="config.xml";

configService.resultFormat="e4x";

configService.addEventListener(ResultEvent.RESULT, configResult);

configService.addEventListener(FaultEvent.FAULT, configFault);

configService.send();

}

private function configResult(event:ResultEvent):void

{

var xml:XML=event.result as XML;

this.ip=xml.ip;

this.port=xml.port;

ConncetServer();

}

//config fault

private function configFault(event:mx.rpc.events.FaultEvent):void

{

Alert.show("load config.xml false!");

}

private function ConncetServer():void

{

socket.addEventListener(ProgressEvent.SOCKET_DATA,OnReceived);

socket.addEventListener(Event.CONNECT , onConnected);

socket.addEventListener(Event.CLOSE, closeHandler);

socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

socket.addEventListener(ProgressEvent.PROGRESS, progressHandler);

socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

this.socket.connect(this.ip,this.port);

}

private function closeHandler(event:Event):void

{

Alert.show("socket is close!");

}

private function ioErrorHandler(event:IOErrorEvent):void

{

Alert.show("socket ioError!");

}

private function progressHandler(event:ProgressEvent):void

{

trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);

}

private function securityErrorHandler(event:SecurityErrorEvent):void

{

trace("securityErrorHandler: " + event);

}

private function onConnected(event:Event):void

{

Alert.show("socket connect success!");

}

private function Send():void

{

//socket.send("message from flex");

}

private function OnReceived(event:ProgressEvent):void

{

var receive:String=socket.readMultiByte(socket.bytesAvailable,"UTF-8");

ExternalInterface.call("addValue",receive);

}

]]>

js代碼:

pageEncoding="utf-8"%>

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

jsocketTest

function addValue(value) {

//alert(value);

mySocket.innerHTML += value+"
";

}

總結(jié)

以上是生活随笔為你收集整理的java 后台输出_将后台输出动态打输出到前台并且显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。