通过javascript和ajax执行java代码

通过javascript和ajax执行java代码,java,javascript,Java,Javascript,我试图在基于web的应用程序上实现java代码,以减少冗余并增加OOP原则 我在服务器端java代码上有一个电话验证正则表达式。我需要在用户添加信息时在浏览器上执行相同的验证,而无需与服务器通信。我知道我可以将相同的代码放到javascript中,但是我有两个位置来维护相同的代码。我正在寻找一种简单的方法来发送带有http响应的正则表达式函数 //java code Class myVerf { bool verPhone(input) {return //comepare verPho

我试图在基于web的应用程序上实现java代码,以减少冗余并增加OOP原则

我在服务器端java代码上有一个电话验证正则表达式。我需要在用户添加信息时在浏览器上执行相同的验证,而无需与服务器通信。我知道我可以将相同的代码放到javascript中,但是我有两个位置来维护相同的代码。我正在寻找一种简单的方法来发送带有http响应的正则表达式函数

//java code
Class myVerf
{
    bool verPhone(input) {return //comepare verPhone to regEx}
}

//html
input type = "text" id = "1" onkeypress = "verPhoneFunc()"

//javascript
function verPhoneFunc()
{
    //get value from id 1
    //execute verPhone java code
}
这样做会有什么失败吗?如果运行浏览器的机器上没有JVM会发生什么?java代码如何在浏览器上执行


我想再次强调。。。我不能使用AJAX,因为我无法与服务器进行通信。

如果没有一些附加技术,就没有真正的方法来完成您想要的任务

最直接的方法是在Java和Javascript都可以访问的公共位置准备一个字符串。为了便于讨论,我会说它在某个地方的文本文件中,但是如果您使用(例如)JSP,您可以用Java编写字符串,并通过JSP模板将其发布到Javascript。字符串将包含(未编译的)正则表达式


在这个解决方案中,您保留了主要的设计目标(只在一个地方维护regex)。

如果没有一些额外的技术,就没有真正的方法来完成您想要的任务

最直接的方法是在Java和Javascript都可以访问的公共位置准备一个字符串。为了便于讨论,我会说它在某个地方的文本文件中,但是如果您使用(例如)JSP,您可以用Java编写字符串,并通过JSP模板将其发布到Javascript。字符串将包含(未编译的)正则表达式


在这个解决方案中,您保留了主要的设计目标(只在一个地方维护regex)。

您无法在服务器端应用程序和客户端应用程序之间轻松可靠地共享java代码(如您所说,如果没有安装java,该怎么办;这也不是一个好方法的其他原因)


话虽如此,您可以做的是共享验证业务规则。定义一种用于指定验证规则的语言,然后实现两个可以读取和执行这些规则的验证引擎:一个用于后端的Java验证引擎和一个用于客户端的Javascript验证引擎。您的webapp可以有一个集中管理的这些规则存储库,并一致地将它们提供给两个引擎。javascript引擎可以接收嵌入到页面HTML中的这些规则,因此不需要AJAX。

您无法在服务器端应用程序和客户端应用程序之间轻松可靠地共享java代码(如您所说,如果没有安装java,该怎么办;这也不是一个好方法的其他原因)


话虽如此,您可以做的是共享验证业务规则。定义一种用于指定验证规则的语言,然后实现两个可以读取和执行这些规则的验证引擎:一个用于后端的Java验证引擎和一个用于客户端的Javascript验证引擎。您的webapp可以有一个集中管理的这些规则存储库,并一致地将它们提供给两个引擎。javascript引擎可以接收嵌入到页面HTML中的这些规则,因此不需要AJAX。

例如,如果您使用Struts 2,您可以利用该框架内置的声明性验证机制。这支持在一个位置声明验证,框架将该验证传播到服务器端验证和客户端验证


例如,如果您使用的是Struts 2,您可以利用该框架内置的声明性验证机制。这支持在一个位置声明验证,框架将该验证传播到服务器端验证和客户端验证


不知道你的意思没有ajax。你是说你想把验证信息和原始响应一起发送,也就是说,包含被验证的Javascript和表单的响应?另外,您是否正在为该应用程序使用web应用程序框架?这正是我想要做的,目前使用的是struts w/tiles,但将来可能会转换为spring MVC。我认为struts 2支持在一个地方整合声明性验证规则,并将其传播到服务器端验证和客户端验证,按照你建议的方式。不确定你的意思没有ajax。你是说你想把验证信息和原始响应一起发送,也就是说,包含被验证的Javascript和表单的响应?另外,您是否正在为该应用程序使用web应用程序框架?这正是我想要做的,目前使用的是struts w/tiles,但将来可能会转换为spring MVC。我认为struts 2支持在一个地方整合声明性验证规则,并将其传播到服务器端验证和客户端验证,按照您建议的方式。当验证要求失败时,您会得到什么指标?在服务器端,您会被重定向到输入页面。在客户端,我怀疑您会向用户显示一条可配置的错误消息。不幸的是,当我研究Struts 2验证时,这一切都发生在post http请求中,这不是我想要的。它为我提供了一种处理服务器端验证的好方法,但它并没有满足全部要求。仍然+1@MattWestlake这不是您想要的?我必须能够执行客户端验证,而不向服务器发送数据。使用这种方法,在提交帖子之前,没有人知道输入的数据是否有效。他想要实时更新验证,因为你正在输入vali失败时,你得到了什么指标