Моя цель - отправить простое сообщение из приложения 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', а не просто 'URLConnection', а также вызвать' setRequestMethod ("GET") ', чтобы инициировать надлежащую HTTP-связь, поэтому контейнер сервлета знает, какой метод сервлета нужно вызвать. –
@Jozef: Нет, OP просто ищет толчок, но неправильно поняли базовые понятия. KS7X, ваш сервлет в основном отвечает на Java-приложение (в этой переменной 'response'), а не на« страницу браузера », как вы ожидали. Какой из них наиболее полезен при решении вашей проблемы? http://stackoverflow.com/q/25947790 или http://stackoverflow.com/q/32426674? – BalusC
Спасибо @BalusC, обе эти ссылки дают мне новый путь, чтобы следить за тем, как мое приложение работает. – KS7X