如何从jsp调用java函数

时间:2011-02-19 09:14:30

标签: java javascript jsp

我要求将项目中用户使用的用户名与已注册的其他用户名进行比较。用户名应该是不同的。为此,输入在newuser.jsp中获取,后者又调用SemanticSearch.java中的函数searchForUsername。当新用户注册时,即使检查了电子邮件ID以进行验证,并且稍后在键入用户名时,也需要进行上述检查。 我试过一种不起作用的方法。请指出我在做什么错误?

我在SemanticSearch.java中的代码有构造函数:

public SemanticSearch() {}

验证电子邮件ID后会跟随以下代码。

我在newuser.jsp中的代码是

SemanticSearch myclass=new SemanticSearch();

boolean rets=myclass.searchForUsername(username);

if (rets==false)

{

    alert("Username already exists");

    document.getElementById("username").value="";

    document.getElementById("password").value="";

    document.getElementById("username").focus();

}

在adduser按钮的click事件期间,必须调用此函数。但在点击功能期间似乎没有任何事情发生。请帮忙。

3 个答案:

答案 0 :(得分:5)

您正在混合使用Java和JavaScript语言。这是不正确的。它们都是在不同环境中运行的不同语言。 Java在webserver中运行,JavaScript在webbrowser中运行。

基本上有两种方法可以达到要求。

  1. 创建一个监听某个URL的servlet,执行验证作业,然后让表单提交给它,让servlet返回到使用JSP / EL显示错误消息的同一页面。您可以在我们的servlet wiki page

  2. 中找到一个简单的示例
  3. 创建一个监听某个URL的servlet,执行验证工作,然后让您的JavaScript代码通过Ajax技术调用它,并相应地修改HTML DOM以添加错误消息。您可以在this question的答案中找到答案。

答案 1 :(得分:1)

您的代码应如下所示。 jsp文件中的所有java代码都需要用“<%”和“%>”

括起来
<%
SemanticSearch myclass=new SemanticSearch();

boolean rets=myclass.searchForUsername(username);

if (rets==false)

{
%>
alert("Username already exists");

    document.getElementById("username").value="";

document.getElementById("password").value="";

document.getElementById("username").focus();
<%
}
%>

答案 2 :(得分:0)

<%
SemanticSearch myclass=new SemanticSearch();

boolean rets=myclass.searchForUsername(username); // how do you get username on button click and assign it to this variable?

if (rets==false)
{
%>

我猜您可以将Java变量分配给JavaScript变量

var username = '<%= username%>';

但反之亦然吗?

<%String username = %>document.getElementById("username").value<%:%>

我更喜欢BalusC的方法(第一个),对于这种情况的javascript验证可能有风险,因为大多数浏览器都支持禁用javascript。