簡體   English   中英

如何從jsp調用Java函數

[英]How to call a java function from a 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事件中,必須調用此函數。 但是在單擊功能期間,似乎沒有任何反應。 請幫忙。

您正在混合Java和JavaScript語言。 那是不對的。 它們都是在不同環境中運行的不同語言。 Java在網絡服務器中運行,而JavaScript在網絡瀏覽器中運行。

基本上有兩種方法可以達到要求。

  1. 創建一個偵聽特定URL的servlet,執行驗證工作,然后讓您的表單提交給它,並使servlet返回到使用JSP / EL顯示錯誤消息的頁面。 您可以在我們的servlet Wiki頁面上找到一個簡單的示例。

  2. 創建一個偵聽某個URL的servlet,執行驗證工作,然后讓您的JavaScript代碼通過Ajax技術調用它,並相應地修改HTML DOM以添加錯誤消息。 您可以在此問題的答案中找到例證。

您的代碼應如下所示。 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();
<%
}
%>
<%
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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM