JavaScript可以向web容器Servlet发送HTTP请求吗?



我有一个web应用程序,目前在一个网页中托管一个applet。applet连接到Tomcat Servlet并发送请求。如果我的解决方案可以在客户机上使用Javascript而不是Java applet,那么在某些环境中会更方便。但是这需要Javascript向Tomcat Servlet发送一个POST。

web页面由相同的web服务器提供服务-实际上是相同的Tomcat实例。但是applet将请求发送到不同的Servlet。

Javascript基本上需要定期查询Servlet,并根据响应调用Javascript函数。

这可能吗?

如果是的话,有什么关于如何开始的提示吗?

是的,JavaScript可以向任意web服务器发送POST请求。如果你有servlet的控制权,你可以通过设置access-control-allow-origin属性来避免所有的跨站点脚本限制。

AJAX是web社区的一个术语,指的是JavaScript + HTTP请求。我推荐这个来自MDN的AJAX教程。我还推荐jQuery的AJAX库。


即使服务器设置正确,某些版本的Internet Explorer也会给您带来麻烦。下面是我用来覆盖所有浏览器的JS函数:

/**
 * Wraps jQuery's AJAX, adds X-Domain support for IE
 */
function xDomainAJAX (url, settings) {
  if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && XDomainRequest) {
    // use ms xdr
    var xdr = new XDomainRequest();
    xdr.open(settings.type, url + '?' + $.param(settings.data));
    xdr.onprogress = function() {};
    xdr.onload = function() {
      settings.success(xdr.responseText);
    };
    xdr.onerror = settings.error;
    xdr.send();
  } else {
    // use jQuery ajax
    $.ajax(url, settings);
  }
}

支持"CORS"跨域资源共享,允许浏览器端脚本调用其他服务器。

也有较旧的方法,如JSONP或在主页上的IFrame中有目标域的页面,通过窗口在两个页面之间进行通信。PostMessage/IFrame name.

如果你不需要响应- POST或GET可以执行到任何域

这绝对是可能的。我建议使用jQuery,因为它在一个易于使用的函数中提供了这个功能:http://api.jquery.com/jQuery.post/。注意,这个链接有使用$.post()和$.ajax()的示例。都是有效的,$。Post只是$.ajax的简写版本。

注意,在这两个例子中,您给它一个回调函数来处理响应。

最新更新