2013-10-28 37 views
3
function ShowMessage() { 
    var url = '/primes/PrimesServlet'; 
    var result = CQ.HTTP.eval(url); 
    var i = Number(document.getElementById("input").value); 
    var str = document.getElementById("test"); 
    // if(result.checkPrimes(i)) // Want to call here 
    str.innerHTML = i + " là số nguyên tố"; 
    // else str.innerHTML = i + " là hợp số"; 
    document.getElementById("output").style.display="block"; 
} 

public class PrimesServlet extends HttpServlet { 
    public boolean checkPrimes(long n) { 
     boolean _return; 
     MillerRabin obj = new MillerRabin(); 
     _return = obj.checkPrimes(n); 
     return _return; 
    } 
} 

我想從我的函數ShowMessage()調用方法checkPrimes(long n),但我不能。如何在函數javascript中調用方法javaservlet?

+0

你可能想在http://en.wikipedia.org/wiki/Ajax_(programming讀了) – aquaraga

+0

你需要通過Ajax請求來調用它,因爲你的Java代碼上運行您服務器,並且您的JavaScript在客戶端執行。將Java方法公開爲Web服務,從JS創建一個[XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest),並使Java方法的返回類型你可以序列化的東西,並在前端解析。 – nbrooks

回答

2

我想從函數javascript「ShowMessage()」調用方法checkPrimes(long n),但我不能。

是的,你不能。

Java在服務器端播放,JavaScript在客戶端播放。

Java需要編譯代碼,而Javascript只是瀏覽器解釋的腳本語言。

您需要的僅僅是向服務器發送請求。

該請求可能是

  1. 表單提交

  2. 阿賈克斯

除了所有的JavaScript你可以檢查首相喜歡。

function isPrime1(n) { 
    if (isNaN(n) || !isFinite(n) || n%1 || n<2) return false; 
    var m=Math.sqrt(n); 
    for (var i=2;i<=m;i++) if (n%i==0) return false; 
    return true; 
} 

Just found here.

如果你想用JavaScript的請求,Ajax是你的朋友。

一個很好的例子:How to use Servlets and Ajax?

+0

我不需要that.CheckPrime只是實例。我想在JavaScript中使用sevlet。 – anhhtbk

+0

所以阿賈克斯是你的朋友。看到這裏.http://stackoverflow.com/questions/4112686/how-to-use-servlets-and-ajax –

+0

謝謝。我會盡力做到這一點。 – anhhtbk

0

你不能調用使用JavaScript方法,因爲在客戶端和javacodes JavaScript執行位於服務器端。

調用方法checkPrimes你可以使用ajax。

0

您可以使用AJAX調用或編寫控制器並通過JavaScript的請求調用它。

問題是(正如其他人所說的),JavaScript運行在客戶端的瀏覽器中,而您的businesslogic運行在Web服務器上。

使用AJAX,您可以觸發服務器執行代碼。

0

你不能這樣打電話。您應該對doGetdoPost方法進行操作,而不是寫結果on PrintWriter.write方法。

public class PrimesServlet extends HttpServlet { 

protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
          throws ServletException, IOException{ 
boolean _return; 
MillerRabin obj = new MillerRabin(); 
_return = obj.checkPrimes(n); 
resp.getWriter().write(_return); 

} 
} 
+0

如果我使用「resp.getWriter()。write(_return);」,瀏覽器將打開新的網站。我想保留我的舊網站。 p.s:我的英語不好。 – anhhtbk

相關問題