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;
    }
 }

我想checkPrimes(long n)从我的函数中调用该方法ShowMessage(),但我不能。

4

4 回答 4

2

我想从函数 javascript“ShowMessage()”中调用方法 checkPrimes(long n),但我不能。

是的,你不能。

Java 在服务器端播放,javascript 在客户端播放。

Java 需要编译后的代码,而 Javascript 只是一种由浏览器解释的脚本语言。

您需要的只是向服务器发出请求。

该请求可能是

  1. 表单提交

  2. 阿贾克斯

除了所有使用 javascript 之外,您还可以像检查 Prime 一样。

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;
}

刚刚在这里找到。

如果您想使用 JavaScript 发出请求,Ajax 是您的朋友。

一个很好的例子:如何使用 Servlets 和 Ajax?

于 2013-10-28T10:33:56.637 回答
0

您不能使用 javascript 调用方法,因为 javascript 在客户端运行,而 javacodes 在服务器端。

调用checkPrimes可以使用ajax的方法。

于 2013-10-28T10:34:48.817 回答
0

您可以使用 AJAX-Calls 或编写一个控制器并通过来自 JavaScript 的请求调用它。

问题是(正如其他人所说),javascript 在客户端的浏览器中运行,而您的业务逻辑在网络服务器上运行。

使用 AJAX,您可以触发服务器执行代码。

于 2013-10-28T10:35:12.180 回答
0

你不能这样打电话。您应该对doGetordoPost方法进行操作,而不是编写结果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);

 }
}
于 2013-10-28T10:44:05.437 回答