#javascript #ajax #gwt #jakarta-ee #rhino
#javascript #ajax #gwt #джакарта-ee #rhino
Вопрос:
Я работаю в области j2ee несколько лет и устал писать все эти AJAX-функции, которые загружают некоторые данные со стороны сервера и визуализируют на стороне клиента.
Возможно ли писать только javascript-коды, которые выполняются как на стороне сервера, так и на стороне клиента.
например, если мне нужно разработать страницу входа, я могу написать фрагмент кода вроде этого:
ИСХОДНЫЙ КОД:
remote checkPassword;
function checkPassword(username, password){
if(existsRecord("select 1 from staff_t where user_name=? and password=?",username, password))
return true;
return false;
};
var main(){
var userName=$("username").val();
var password=$("password").val();
if(checkPassword(userName,password))
alert("Welcome, " user);
}else{
alert("sorry, wrong username or password.");
}
}
В приведенном выше коде javascript получает данные напрямую из dababase, разве это не яснее и не проще для понимания?
Хотя этот код фактически выполняется в производственном режиме, он разделен движком на две части:
НА СТОРОНЕ СЕРВЕРА:
function checkPassword(username, password){
if(existsRecord("select 1 from staff_t where user_name=? and password=?",username, password))
return true;
return false;
};
НА СТОРОНЕ КЛИЕНТА:
var userName=$("username").val();
var password=$("password").val();
// 'checkPassword' has been translated to an AJAX function.
if(checkPassword(userName,password))
alert("Welcome, " user);
}else{
alert("sorry, wrong username or password.");
}
Таким образом, мы можем использовать один фрагмент кода для одного бизнеса, не разделяя их на java и javascript. Движок разделит код и определит, какие части должны выполняться на сервере, а другие — в браузерах.
Я обыскал весь Интернет, но не нашел ни одного подобного фреймворка, который мог бы обеспечить доступ к базе данных / EJB / WEBSERVICE.
Google Web Toolkit (GWT) позволяет нам писать чистый JAVA-код для браузерного приложения, но мне это кажется немного неуклюжим. 🙂
Rhino — это движок javascript, работающий на проектах j2ee, но он не предоставляет никаких средств для доступа как к данным на стороне клиента, так и к данным на стороне сервера.
кто-нибудь знает подобный фреймворк, или его можно разработать самостоятельно? каковы плюсы и минусы?
Спасибо.
Комментарии:
1. Вы понимаете, что JS можно отключить, взломать и подделать (т. Е. он на 100% контролируется клиентом)? У вас действительно должно быть что -то на стороне сервера, чтобы уловить это.
2. Если это чистый JavaScript, это больше не будет проект J2EE. Если вы просто хотите иметь возможность использовать JavaScript на сервере, взгляните на nodejs . Если вы хотите сделать все это на JavaScript на клиенте, обратитесь к комментарию BalusC.
3. извините, я забыл упомянуть, что предполагается, что движок разделяет код на клиентский код и серверный код, серверный код будет выполняться Rhino, в то время как клиентский код выглядит точно так же, как мы обычно пишем. Я отредактировал сообщение.
4. спасибо, что указал на это, Балуск. nnnnnn, я просматриваю веб-сайт nodejs, спасибо. На самом деле, я просто ненавижу AJAX и думаю о способе избавиться от него, он вызывает множество избыточных фрагментов кода по всем моим проектам, все функции, написанные на Java, должны быть переписаны на Javascript.
Ответ №1:
Возможно ли писать только javascript-коды, которые выполняются как на стороне сервера, так и на стороне клиента.
Конечно, бросайте J2EE и присоединяйтесь к node.js сообщество
Что касается фреймворков, то нет. Вы не можете волшебным образом взаимодействовать между ними. Лучшее, что я видел, — это автоматизированный RPC, подобный nodeQuery, где сервер отправляет DOM-команды клиенту через RPC.
В качестве альтернативы, кому нужен сервер, когда вы можете писать couchapps и обслуживать HTML непосредственно из своей базы данных.
Ответ №2:
Ленивым решением этого является использование фреймворков, которые имеют прямую привязку между представлением пользовательского интерфейса и объектной моделью сервера. Это значительно упрощает написание проверки только на стороне сервера: вы просто указываете код проверки на Java. AJAX автоматически делает эту проверку доступной на стороне клиента (до того, как фактически произошла отправка!)
Если подумать, пример пароля очень минимален. Для большинства случаев проверки требуется больше кода и еще больше данных. Предположим, вы подтверждаете адрес пользователя, используя географическую базу данных; передадите ли вы эту полную базу данных на сторону клиента? Нет, вы отправляете адрес на сервер с помощью AJAX и показываете результат проверки пользователю в режиме реального времени.
JSF довольно хорошо использует этот подход (RichFaces, ICEfaces …)