当从servlet返回到JSP时,Javascript会发生变化

当从servlet返回到JSP时,Javascript会发生变化,java,javascript,jquery,jsp,servlets,Java,Javascript,Jquery,Jsp,Servlets,晚上好,, 我在JSP页面上有一个表单,它连接到一个servlet,该表单有一些使用JavaScript的动态部分,比如向表中添加一行,或者根据select元素上的select选项添加一个文本字段,实际上我的问题是在servlet端有一些验证,因此,当我转到servlet检查国家ID时,例如,如果我的验证有任何问题或违规,我会使用以下命令强制返回表单: if (dbm.MatchIdNumber(Candidate.getRegNumber(), Candidate.getNationalID(

晚上好,, 我在JSP页面上有一个表单,它连接到一个servlet,该表单有一些使用JavaScript的动态部分,比如向表中添加一行,或者根据select元素上的select选项添加一个文本字段,实际上我的问题是在servlet端有一些验证,因此,当我转到servlet检查国家ID时,例如,如果我的验证有任何问题或违规,我会使用以下命令强制返回表单:

if (dbm.MatchIdNumber(Candidate.getRegNumber(), Candidate.getNationalID()) == false) {
                    out.println("<script>\n"
                            + "     alert('Your National Id does not match your Registration Number');\n"
                            + "</script>");
                    out.println("<script>\n"
                            + "     window.history.go(-1);\n"
                            + "</script>");
                }
当我回到表单时,会丢失所有JavaScript更改,这一点非常重要。 我已经阅读了一段时间,使用ajax可能是我的最佳解决方案,但以下是我的问题:

在使用servlet之前,有没有一种方法可以从JavaScript或JQuery调用java方法而不使用ajax!?! 有没有一种方法可以从servlet返回到jsp页面,并能够保留所有JavaScript更改!? 如果不是!!,在我的情况下如何使用ajax?! 多谢各位

不,JavaScript在用户的浏览器上运行,Java代码在Web服务器上运行,所以基本上,两者之间通信的唯一方式是通过HTTP请求

如果不想使用AJAX,可以在将表单提交给服务器进行验证时提供所有相关信息。您可以传递重新生成表单所需的所有信息,比如有哪些新字段等等

首先,您需要向Java webapp添加一个新的Web服务,该服务将执行验证。为了实现这一点,您可以向servlet添加额外的逻辑,以便它查找doValidation=1这样的请求参数并在存在时执行验证,或者编写另一个servlet来处理验证本身。您需要决定表单数据的预期格式以及返回验证信息的方式

在前端页面上,您需要修改表单的行为,以便在需要进行验证时,表单执行对此Web服务的请求并传递表单数据。我可能会用jQuery做这件事,然后做一些类似jQuery.ajax的事情。。。并将表单的内容作为JSON对象传递

当验证servlet从ajax调用返回数据时,您需要根据表单提供的数据更新表单。如果我这样做的话,我可能会让servlet返回一个JSON对象,比如{errorMessage:…},并且在发生验证错误时,我会使用jQuery向表单中添加一个元素,其中包含验证错误的文本。如果servlet返回空字符串或JSON对象或某些东西,我会认为它是验证成功。