0
我的目標是從Java應用程序(JA)向servlet(S)發送簡單消息並將其顯示在瀏覽器頁面上。我希望每次運行servlet類(刷新瀏覽器頁面)時,都會收到消息。將消息從Java應用程序發送到servlet並顯示它
我使用BufferedWriter在S上傳輸JA和BufferedReader上的輸出以接收它,但我想我做錯了什麼。
下面是從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'而不是'URLConnection',並且調用'setRequestMethod(「GET」)'來啓動正確的HTTP通信,所以servlet容器知道調用哪個servlet的方法。 –
@Jozef:不,OP只是在尋找推動力,但基本概念錯了。 KS7X,你的servlet基本上是迴應Java應用程序(在'response'變量中),而不是你所期望的「瀏覽器頁面」。哪些對解決您的問題最有幫助? http://stackoverflow.com/q/25947790或http://stackoverflow.com/q/32426674? – BalusC
感謝@BalusC,這兩個鏈接都給我一個新的途徑,讓我的申請工作。 – KS7X