当前位置: 首页 > 知识库问答 >
问题:

从AJAX调用Tomcat上的Java Servlet

赫连永怡
2023-03-14

我想在Java WebApp中使用Tomcat7从ajax调用Servlet。

只有当我使用整个url“http://localhost:8080/webappname/vservlet”时,它才起作用,但只在我的PC中起作用。然而,我必须将它部署在具有商业域名的服务器上,这显然不同于“localhost”。

拜托,谁能告诉我是否有一种方法可以用相对URL来寻址servlet?因为如果我使用像'http://my.domain.it:8080/webappname/vservlet'这样的字符串,它在服务器机器上的Tomcat7上不起作用。

谢了。

-----------编辑-----------------------------------------------------------------------

我试着更好地解释我的问题。我有一个返回json结构Java Servlet。在javascript文件中调用servlet,该文件必须在web页面中绘制图形,构建SVG映像。我必须在安装了Tomcat7的商用Windows服务器上部署此web应用程序。web应用程序通常工作。任何错误都是从用户的角度显示的。简单地说,如果我使用上面写的字符串来调用servlet,图像就不会出现。我认为servlet没有响应是因为我使用了错误的地址/命名。如果我使用绝对url,servlet会响应js调用者,但我需要一个相对字符串,所以如果服务器的域名会改变,我也不会改变js文件的代码。

共有1个答案

卫甫
2023-03-14

当你打电话的时候

$.getJSON('VServlet', ... );

您正在向相对于当前URL的URL发出HTTP GET请求。也就是说,如果您在/webapp/users/user.xhtml中,您将向/webapp/users/vservlet发送一个请求,该请求显然与servlet的URL模式不匹配,也不是您想要实现的。

您需要考虑JSF应用程序的上下文路径,它在视图中显示为#{request.contextpath}以构建正确的绝对URL:

$.getJSON('#{request.contextPath}/VServlet', ... );

如果您需要将请求发送到相对于根的路径,这样的请求URL以斜杠/开始,并表示相对于根的URL,无论您现在在哪里:

$.getJSON('/VServlet', ... );

这将向http://localhost:8080/vservlet发送一个请求。

 类似资料:
  • 我涉足了Node JS。我需要Node JS(使用“请求”模块)通过HTTPS调用Java REST API。 正如在给定URL中解释的那样,我创建了一个CA文件(ca.key,ca.pem),服务器的证书(server1.key,server1.pem) 现在,我想从我的Node JS客户端访问在Apache Tomcat上运行的JAVA REST API。那么现在我如何导入我的节点JS服务器密

  • 问题内容: 我试图在我自己的函数中使用jQuery ajax调用的返回值,但它始终返回未定义的值。 ajax调用绝对有效,因为当我取消注释警报时,我得到了正确的返回,并且可以在firebug中看到它。我在做蠢事吗? 问题答案: AJAX调用是异步的-这意味着AJAX请求是按常规程序执行顺序发出的,并且在您的程序中这意味着不会将数据返回警报。 您不能以这种方式使用调用的返回值,而是将利用AJAX返回

  • 问题内容: 我使用jquery ajax从javascript调用php的代码似乎存在问题。Ajax调用似乎成功了,但是我没有从php函数返回正确的信息。 在php函数中,我创建一个SQL查询。在执行删除查询之前,我将查询发回作为调试的响应。这是显示查询的div的HTML。 这是jquery ajax调用。有两个变量发送给PHP函数:用于删除节点的nodeid和用于该函数的option delet

  • 问题内容: 我在站点的文档上有一些ajax调用,这些调用根据ajax状态显示或隐藏进度条 我想基本上在网站的其他部分覆盖这些方法,这些地方会进行许多快速的小型ajax调用,并且不需要弹出和弹出进度条。我试图将它们附加到其他$ .getJSON和$ .ajax调用中或将其插入。我已经尝试过将它们链接起来,但是显然那不好。 问题答案: 2018注意: 此答案已过时; 您可以随时对这个答案进行修改,以解

  • 我使用了服务器端处理https://datatables.net/examples/data_sources/server_side.html 我想在自定义按钮单击后调用相同的datatable ajax调用。在这个自定义按钮上,我更改了datatable ajax调用参数。有没有办法调用相同的ajax调用?请帮帮我!

  • 问题内容: 好的,我花了一段时间解决这个问题,这是我收集到的: 如果在IE7中调用AJAX,并且指定了window.onbeforeunload函数,则它将调用onbeforeunload函数。 如果尝试使用window.open打开一个新窗口而又不打扰当前窗口,则会调用onbeforeunload。 有人知道如何制止吗?我什至尝试将变量设置为TRUE,并在onbeforeunload函数中检查该