我正在尝试在基于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
}
这样做有什么不足吗? EX:如果浏览器运行的机器上没有JVM会发生什么? java代码如何在浏览器上执行?
我想再次强调......我不能使用AJAX,因为我无法与服务器通信。
答案 0 :(得分:2)
如果没有其他技术,就没有办法做你想要的事情。
执行所需操作的最直接方法是在Java和Javascript都可以访问它的某个公共位置准备字符串。为了便于讨论,我会说这是在某个文本文件中,但如果你正在使用(例如)JSP,你可以用Java准备字符串并通过JSP模板将它发布到Javascript。该字符串将包含(未编译的)正则表达式。
在此解决方案中,您保留了主要设计目标(仅在一个位置保留正则表达式。)
答案 1 :(得分:1)
您无法轻松可靠地在服务器端应用程序和客户端应用程序之间共享Java代码(就像您说的那样,如果没有安装java,会有什么问题;还有其他原因导致这不是一个好方法)。
话虽如此,您可以做的是共享验证业务规则。定义用于指定验证规则的语言,然后实现两个可以读取和执行这些规则的验证引擎:一个用于后端的Java,另一个用于客户端的Javascript。您的webapp可以拥有这些规则的集中管理存储库,并始终将它们提供给两个引擎。 javascript引擎可以接收嵌入到页面HTML中的这些规则,因此不需要AJAX。
答案 2 :(得分:1)
例如,如果您正在使用Struts 2,则可以利用该框架内置的声明性验证机制。这支持在一个位置声明验证,框架将该验证传播到服务器端验证和客户端验证。