Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача информации, из аплета в бин 
V
    Опции темы
sezin
Дата 25.5.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



Передачу данных из бина в аплет сделать довольно просто, если учесть, что передаются только строковые величины...
А вот как потом из аплета вытащить информацию и положить её обратно?
Пусть будут строки, не важно... Нигде не могу найти такой информации...  smile 
Заранее спасибо. 
PM MAIL ICQ MSN   Вверх
sezin
Дата 25.5.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



Ну или может быть есть возможность присвоить значение переменной в скриплете из JS? 
PM MAIL ICQ MSN   Вверх
batigoal
Дата 25.5.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(sezin @  25.5.2006,  16:31 Найти цитируемый пост)
А вот как потом из аплета вытащить информацию и положить её обратно?

Обратно - куда?

Опиши немного подробнее проблему. Где именно находится твой бин?

Добавлено @ 15:53 
Цитата(sezin @  25.5.2006,  16:52 Найти цитируемый пост)
Ну или может быть есть возможность присвоить значение переменной в скриплете из JS?  

Нет, потому что JS вступает в дело у же на клиенте, когда скриптлет закончил свою работу. 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
MisterCleric
Дата 26.5.2006, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Посмтори здесь
http://www.j-nine.com/pubs/applet2servlet/...et2Servlet.html
может что-то и поможет.
Вообще суть в том, чтобы в аплете организовать сетевое соединение - сокет или хттп. А там тебе нужны - серв, его порт, УРЛ ресурса и передача ему параметров. 


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sezin
Дата 26.5.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



да, извиняюсь, проблему описал не полно... есть бин:
Код

<jsp:useBean id="pageBeanID"
               scope="session"
               type="com.my.company.BeanClass"/>

затем я из него получаю инфу в скриплете:
Код

<%!
    List myList = new ArrayList();
%>

<%
    myList = BeanClass.getList();
%>

Ну а потом делать можно с ней что угодно... Я передаю строки в аплет:
Код

<script language="javascript" type="text/javascript">
    var myApplet = document.getElementById("myAppletID");

    function onPressButton() {
        <% for (Iterator j = (myList .iterator()); j.hasNext();) { %>
            <% g = (MyClass) j.next(); %>
            //=======================================
            myApplet.setName('<%= g.getName() %>');
            myApplet.setAge('<%= g.getAge() %>');
            myApplet.setLocation('<%= g.getLocation() %>');
            //=======================================
        <% } %>
</script>

Ну и вот вопрос собсно - как например получить из аплета строку - myApplet .getName() и передать её обратно в бин g.setName()?
Или этого вообще можно не делать?!  smile   

Это сообщение отредактировал(а) sezin - 26.5.2006, 12:15
PM MAIL ICQ MSN   Вверх
batigoal
Дата 26.5.2006, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(sezin @  26.5.2006,  13:15 Найти цитируемый пост)
Или этого вообще можно не делать?!  smile   

Это невозможно сделать. Ситуация развивается так:

Выполняется твоя JSP. Результат её работы - HTML-страница с апплетом. Страница ничего ни о каких бинах не знает, java-код в неё не включается. У тебя есть только твой апплет, который выполняется на клиенте. 

У тебя есть два варианта действий:
1) Исключить взаимодействие с сервером
2) Организовать сетевое взамиодействие. 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
MisterCleric
Дата 26.5.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Да тебе же сказали:
Бин твой и всё JSP отрабатывает при загрузке страницы, а потом из них получаеться статический ХТМЛ и встроенные плагинчики наподобие апплетов.
Что бы ты мог снова обратиться к бину, тебе нужно в апплете сделать сетевое соединение и перенаправить твой параметр в УРЛ на другую страницу, где твой бин и обратиться к полученному параметру. Нужно сделать что-то наподобие:
Код

      String protocol = getCodeBase().getProtocol();
      String host = "localhost";
      String portString = "8080";
      String uri = "/PostFromApplet.jsp";
      URL dataURL = new URL(protocol, host, port, uri);
      HttpURLConnection connection = (HttpURLConnection)dataURL.openConnection();
   
     connection.setRequestMethod("POST");
     connection.setUseCaches(false);
      connection.setDoOutput(true);
     connection.setFollowRedirects(true);
      
      ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512); 
      PrintWriter out = new PrintWriter(byteStream, true);
      String postData =  "AppletName=" + getName();
      
      out.print(postData);
      out.flush();

      String lengthString =  String.valueOf(byteStream.size());
      connection.setRequestProperty("Content-Length", lengthString);
      
      byteStream.writeTo(connection.getOutputStream());

 


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sezin
Дата 26.5.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



А можно не абстракный пример? У меня из аплета надо 2 объекта типа List передать...
Этот код в какой метод аплета вставить? В destroy() что ли, или свой метод сделать можно? И что он передаст? 
PM MAIL ICQ MSN   Вверх
batigoal
Дата 26.5.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(sezin @  26.5.2006,  14:30 Найти цитируемый пост)
А можно не абстракный пример? У меня из аплета надо 2 объекта типа List передать...
Этот код в какой метод аплета вставить? В destroy() что ли, или свой метод сделать можно? И что он передаст?  

В любой. Можно при нажатии на какую-нибудь кнопку сделать.

Пример есть тут:
http://forum.vingrad.ru/index.php?showtopic=37951 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
sezin
Дата 26.5.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



Ладно, пока спасибо на этом. Буду думать...   smile  
PM MAIL ICQ MSN   Вверх
MisterCleric
Дата 29.5.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Ну что ты там надумал?
А так не пробовал?
Код

      getAppletContext().showDocument(new URL("http", "localhost", 8080, "MyApp/PostFromApplet.jsp?AppletName=" + getName()));

А там уже передавать параметр бину
Глянь вот старый пример:

Добавлено @ 12:27 
Ну что ты там надумал?
А так не пробовал?
Код

      getAppletContext().showDocument(new URL("http", "localhost", 8080, "MyApp/PostFromApplet.jsp?AppletName=" + getName()));

А там уже передавать параметр бину
Глянь вот старый пример:
 

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  PostApplet.zip 5,77 Kb


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sezin
Дата 29.5.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



Чем дальше в лес - тем толще партизаны...
А когда у сервлета вызываются методы doPost() и doGet()? При загрузке и отправке? Ну ладно...
А если у меня JSPDynPage? Есть разница? Или также прописать в doProcessBeforeOutput() и doProcessAfterInput()?

И затем встает вопрос - как передать 2 листа обьектов? Я читал что информация передается вся сразу... Как сделать, чтобы сначала отправить один лист, потом дождаться ответа, что все получено и послать второй?
 
PM MAIL ICQ MSN   Вверх
batigoal
Дата 29.5.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(sezin @  29.5.2006,  14:25 Найти цитируемый пост)
А когда у сервлета вызываются методы doPost() и doGet()?

При  получении им GET либо POST запроса. Часто делают так:
Код

doGet() {
...
}
doPost {
  doGet();
}

Цитата(sezin @  29.5.2006,  14:25 Найти цитируемый пост)
А если у меня JSPDynPage? Есть разница? Или также прописать в doProcessBeforeOutput() и doProcessAfterInput()?

Нет, для JSP передачи запроса не имеет значения. 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
sezin
Дата 29.5.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



А как быть с агрументами?
Мне просто не до конца понятна последовательность действий.
На строне аплета
Код

/**
     * Get a connection to the servlet.
     */
    private URLConnection getServletConnection()
        throws MalformedURLException, IOException {

        URL urlServlet = new URL(getCodeBase(), "echo");
        URLConnection con = urlServlet.openConnection();

        con.setDoInput(true);
        con.setDoOutput(true);
        con.setUseCaches(false);
        con.setRequestProperty(
            "Content-Type",
            "application/x-java-serialized-object");

        return con;
    }

    /**
     * Send data to the servlet
     */
    private void onSendData() {
        try {
            // get input data for sending
            String input = inputField.getText();

            // send data to the servlet
            URLConnection con = getServletConnection();
            OutputStream outstream = con.getOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(outstream);
            oos.writeObject(input);
            oos.flush();
            oos.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

На строне сервлета:
Код

/**
     * Get a String-object from the applet and send it back.
     */
    public void doPost(
        HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException, IOException {
        try {
            response.setContentType("application/x-java-serialized-object");

            // read a String-object from applet
            InputStream in = request.getInputStream();
            ObjectInputStream inputFromApplet = new ObjectInputStream(in);
            String echo = (String) inputFromApplet.readObject();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Правильно ли вообще всё это?!
А что мне делать в случае JSPDynPage? Как быть с аргументами для методов POST и GET? Откуда брать getInputStream()? 
PM MAIL ICQ MSN   Вверх
sezin
Дата 8.6.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.3.2006
Где: Россия

Репутация: нет
Всего: нет



Ну ладно, дабы не маячить этой темой, отмечу как решенную...  smile  
PM MAIL ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.