0
私の目的は、Javaアプリケーション(JA)からサーブレット(S)に単純なメッセージを送信し、ブラウザページに表示することです。私は、サーブレットクラス(ブラウザページをリフレッシュする)を実行するたびにメッセージを受け取ることを期待しています。Javaアプリケーションからサーブレットにメッセージを送信して表示する
私はBufferedWriterを使用して、JAの出力とBufferedReaderをSに送信しますが、私は間違ったことをしています。ここで
はJAからのコードスニペットは、次のとおりです。
try{
URL url = new URL("http://(/*ip address*/:8080/FirstServlet/myfirstservlet");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
out.write("testing");
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String response;
while((response = in.readLine()) != null) {
//System.out.println(response);
}
in.close();
}
catch (MalformedURLException ex) {
ex.printStackTrace();
}
catch (IOException iex) {
iex.printStackTrace();
}
ここでSからのコードです:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class FirstServlet extends HttpServlet {
private final static String _USERNAME = "username";
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException , IOException {
PrintWriter out = res.getWriter();
BufferedReader bufferedReader = null;
StringBuilder stringBuilder = new StringBuilder();
char test = 'a';
try{
InputStream inputStream = req.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
out.println(charBuffer); //expecting this to be displayed on browser
}
} else {
stringBuilder.append("");
out.println("0");
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
私はしばらくの間、私のJAコード(独自のスレッドで実行)をラップしようとしている(真)ループだが、それは役に立たなかったようだ。どんな助けもありがとう。ありがとう!
私は 'あなたが使用する必要があると考えていますHttpURLConnection'を呼び出すだけでなく、 'setRequestMethod(" GET ")'を呼び出して適切なHTTP通信を開始し、サーブレットコンテナが知っているようにサーブレットのどのメソッドを呼び出すかを知ることができます。 –
@ジョゼフ:いいえ、OPはプッシュを探していますが、基本的なコンセプトが間違っています。 KS7Xでは、サーブレットは、基本的にJavaアプリケーション(その 'response'変数内)に応答します。期待していたように、「ブラウザのページ」ではありません。あなたの問題の解決に最も役立つのはどれですか? http://stackoverflow.com/q/25947790またはhttp://stackoverflow.com/q/32426674? – BalusC
ありがとう@BalusC、これらのリンクの両方が私のアプリケーションを動作させるための新しい道を与えてくれます。 – KS7X