2009-07-03 2 views
1

Я хочу написать некоторую страницу с апплетом JavaFX. Я хочу, чтобы содержимое апплета зависело от пользователя, которого вы входите в систему.Апплет JavaFX, взаимодействующий с сервером

Я знаю, что могу называть веб-сервисы от JFX, но как насчет входа и сессии? Кроме того, я думаю, что для такого общения могут быть некоторые более эффективные решения, чем при вызове из апплета, из которого поступает веб-служба, сидящая на апплете.

Как я могу это сделать?

+0

Можете ли вы сказать, что на вашей стороне сервера? сервлет? Я думаю, что нет ничего особенного в javafx. это просто нормальная коммуникация апплета-сервера. вы можете вызвать необходимый код java для связи с вашим javafx –

+0

Я еще не знаю, что еще на стороне сервера. Этот проект еще не запущен :) Возможно, я поставил там сервлеты. Я знаю, что это обычный аплет-сервер, но у javaFX есть дополнительная поддержка для веб-сервисов, я просто подумал, что, возможно, у него есть и что-то для этой коммуникации с апплетами. – amorfis

+0

Хорошо, я знаю только о поддержке веб-службы. В моем проекте мне нужна была связь с сервером приложений, и я сделал это с обычным java jndi lookup. Не могу помочь вам, но мне интересно посмотреть, как это делается лучше всего - я буду следить за вашим вопросом. –

ответ

1

Вы можете создать сервлет, который возвращает имя зарегистрированного пользователя.

Затем в javafx вы можете использовать класс javafx.io.http.HttpRequest, чтобы вызвать сервлет и зачитать имя пользователя. (API-интерфейс также имеет некоторые examples о том, как использовать HttpRequest)

Следующий код JavaFX печатает возврата строки сервлета:

var response: String; 

def myRequest: HttpRequest = HttpRequest { 

location: "http://localhost:8080/demo/foo.do"; 

method: HttpRequest.GET; 

onInput: function(is: java.io.InputStream) { 
    var buff: StringBuffer = new StringBuffer(); 

     var reader: BufferedReader 

      = new BufferedReader(new InputStreamReader(is)); 

     var data: String; 

     while ((data = reader.readLine()) != null) { 

      buff.append(data); 

     } 

     response = buff.toString(); 

     reader.close(); 
     println(response); 
} 
}; 

myRequest.start(); 

EDIT: Вы также должны взглянуть на эту статью: http://blogs.oracle.com/warren/entry/authenticating_a_javafx_application_using, который показывает, как получить доступ к html-документу и файлам cookie из апплета, который находится в документе. Это должен быть очень интересный подход для аутентификации.

+0

Это то, чего я не хватал, если только такой HttpRequest делится сеансом с «обычным», запросом браузера , Я предполагаю, что так оно и есть. Так, не так ли? – amorfis

+0

hmm. На самом деле я просто пытался, и они, похоже, не разделяют одну и ту же сессию. По крайней мере, сессия fx httprequest была пуста. Но я не настолько разбираюсь в сервлетах. Возможно, есть способ сохранить имя пользователя на сервере, чтобы вернуть его позже. Но я также нашел еще одну очень интересную статью, которую я только что добавил к ответу ... –

Смежные вопросы