Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Апплеты > чтение данных из сервлета в апплет


Автор: Wanderer2019 23.12.2004, 12:33
Здравствуйте! Подскажите пож. как можно при запуске апплета обратиться к сервлету и считать данные. Я делаю следующее:
1.на стороне сервлета
Код

   OutputStream go;
   ObjectOutputStream objStream;
   go=response.getOutputStream();
   objStream=new ObjectOutputStream(go);
   .....
   objStream.writeInt(myInt);


2.на стороне апплета
Код

private int getNextNum() throws IOException{
  URL url=new URL(getCodeBase(),"optimal_price.class");
  URLConnection con=url.openConnection();
  con.setUseCaches(false);
  InputStream in=con.getInputStream();
  ObjectInputStream objStream=new ObjectInputStream(in);
  int test=objStream.readInt();
  return test;
}

3. Выдает ощибку: invalid stream header

не пойму в чем дело.... smile
делал прям все как в книге smile

Автор: AntonSaburov 23.12.2004, 13:21
Так тебе надо запросить URL - что-то в виде http://myserver/<сервлет> (Это я достаточно схематично показал).
А просто Name.class - ерунда получиться.

Автор: Wanderer2019 23.12.2004, 13:49
например у меня JBuilder имеется в одном проекте сервлет - из которого и беру данные и апплет - который берет данные. Как же мне указать эту долбанную строчку????????????????? smile

Автор: Wanderer2019 23.12.2004, 15:04
okay. изменил строку. Теперь на стороне сервлета:
Код

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   response.setContentType(CONTENT_TYPE);
   OutputStream out;
   ObjectOutputStream objStream;
   out=response.getOutputStream();
   objStream=new ObjectOutputStream(out);
   int test=1;
   objStream.writeInt(test);  
 }

на стороне аплета:
Код

private int gettest()throws IOException{
 URL url=new URL(getCodeBase(),"http://localhost:8080/WebModule1/mysevlet");
 URLConnection con=url.openConnection();
 con.setRequestProperty("Content-Type", "application/x-java-serialized-object");
 con.setUseCaches(false);
 InputStream in=con.getInputStream();
 ObjectInputStream objStream;
 objStream=new ObjectInputStream(in);
 int this_test_is=objStream.readInt();
 return this_test_is;
}

на строке
Код

 int this_test_is=objStream.readInt();

вылетает с ошибкой null . smile

Автор: AntonSaburov 23.12.2004, 15:08
А разве не HttpURLConnection надо ?

Автор: Wanderer2019 23.12.2004, 15:15
исправил строку:
Код

URLConnection con=(HttpURLConnection)url.openConnection();

и тоже самое. smile

Автор: AntonSaburov 23.12.2004, 15:20
А почему readInt() ? Там же текст сплошной по идее должен быть.

Автор: Wanderer2019 23.12.2004, 15:22
ну я же objStream.writeInt(test); пишу в сервлете.???

Автор: Wanderer2019 23.12.2004, 15:52
smile нашел ошибку!!! все было правильно. Просто на стороне сервлета на до дописать
Код

   objStream.flush();
   objStream.close();

Автор: AntonSaburov 23.12.2004, 16:17
Типа, поздравляем smile

smile

Автор: Wanderer2019 24.12.2004, 12:07
smile smile

Автор: Wanderer2019 28.12.2004, 13:30
а как же мне теперь этот апплет разместить на html? ему же нужна инфа из сервлета!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)