J2EE项目上的纯javascript框架可能吗?

J2EE项目上的纯javascript框架可能吗?,javascript,ajax,gwt,jakarta-ee,rhino,Javascript,Ajax,Gwt,Jakarta Ee,Rhino,我在j2ee领域工作了几年,已经厌倦了编写所有那些从服务器端下载数据并在客户端呈现的AJAX函数 是否可以只编写在服务器端和客户端上运行的javascript代码 比如,如果我需要开发一个登录页面,我可以写一段类似这样的代码: 原始代码: remote checkPassword; function checkPassword(username, password){ if(existsRecord("select 1 from staff_t where user_name=? a

我在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.");
    }
}
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.");
    }
在上面的代码中,javascript直接从dababase获取数据,这不是更清晰、更容易理解吗

虽然此代码实际上在生产模式下运行,但它由一个引擎分为两部分:

服务器端:

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.");
    }
}
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.");
    }
客户端:

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.");
    }
}
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是一个运行在j2ee项目上的javascript引擎,但它不提供任何访问客户端数据和服务器端数据的方法

有人知道这样的框架吗,或者我们自己开发一个框架是可能的吗?利与弊是什么

谢谢

是否可以只编写在服务器端和客户端上运行的javascript代码

当然,放弃J2EE,加入社区吧

至于框架,不。你不能在两者之间神奇地交流。我见过的最好的是自动化RPC,比如服务器通过RPC向客户端发送DOM命令


或者,当您可以直接从数据库编写和提供HTML时,谁还需要服务器呢?

一个懒惰的解决方案是使用在UI表示和服务器对象模型之间具有直接绑定的框架。这使得只在服务器端编写验证变得更加容易:只需用Java指定验证代码。AJAX使此验证在客户端自动可用(在提交实际发生之前!)

仔细想想,密码示例非常简单。大多数验证案例需要更多的代码和更多的数据。假设您使用地理数据库验证用户的地址;您会将这个完整的数据库推送到客户端吗?不,您可以使用AJAX将地址发送到服务器,并实时向用户显示验证结果


JSF很好地使用了这种方法(RichFaces、ICEFaces…

您是否意识到JS可以被禁用、黑客攻击和欺骗(即它100%由客户端控制)?你真的必须在服务器端有一些东西才能抓住它。如果它是纯JavaScript,那么它就不再是J2EE项目了。如果您只想在服务器上使用JavaScript,请查看。如果您想在客户端使用JavaScript完成所有操作,请参阅BalusC的评论。对不起,我忘了提到引擎应该将代码分为客户端代码和服务器端代码,服务器端代码将由Rhino执行,而客户端代码看起来就像我们通常编写的一样。我已经编辑了这篇文章。谢谢你指出这一点,巴卢斯克。我正在浏览nodejs的网站,谢谢。事实上,我只是讨厌AJAX并想办法摆脱它,它会导致我的项目中出现许多冗余代码片段,所有用Java编写的函数都必须用Javascript重写。