首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从AJAX调用Tomcat上的Java Servlet

问从AJAX调用Tomcat上的Java Servlet
EN

Stack Overflow用户
提问于 2013-12-11 01:11:44
回答 2查看 1.4K关注 0票数 0

我想使用Tomcat7在中调用ajax中的Servlet。

我使用注释@WebServlet("/VServlet")在WebApp中映射它,因为Tomcat7支持Servlet3.0。我使用jquery命令"$.getJSON('VServlet',function(data){ ... });“调用servlet,但是如果我使用字符串'VServlet',它就不能工作。

只有当我使用完整的url 'http:// localhost:8080/WebAppName/VServlet‘时,它才能工作,但只在我的电脑上。然而,我必须将其部署在具有商业域名的服务器上,这与"localhost“明显不同。

请问,有没有人能告诉我有没有办法用一个相对的url来处理servlet?因为如果我使用像'http://my.domain.it:8080/WebAppName/VServlet‘这样的字符串,它在服务器机器上的Tomcat7上就不起作用。

谢谢。

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

EN

回答 2

Stack Overflow用户

发布于 2013-12-11 01:56:51

当你调用

代码语言:javascript
复制
$.getJSON('VServlet', ... );

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

您需要考虑在视图中作为#{request.contextPath}可用的JSF应用程序的上下文路径,以构建适当的绝对URL

代码语言:javascript
复制
$.getJSON('#{request.contextPath}/VServlet', ... );

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

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

代码语言:javascript
复制
$.getJSON('/VServlet', ... );

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

票数 2
EN

Stack Overflow用户

发布于 2013-12-13 03:10:37

如果js代码位于jsp页面中,而不是代码中。

$.getJSON('VServlet',function(data){ ... });

写

"$.getJSON('${request.contextPath}/VServlet',function(data){ ... });

否则,如果此代码位于某个js文件中的函数中,则如下所示

代码语言:javascript
复制
function someFunction(){
     $.getJSON('VServlet', function(data){ ... });
}

然后从jsp调用函数someFunction(),然后向该函数添加一个参数,如下所示-

代码语言:javascript
复制
function someFunction(url){
         $.getJSON('VServlet', function(data){ ... });
    }

现在从jsp调用它,就像这样-

someFunction('${request.contextPath}/VServlet')

因为${request.contextPath}/VServlet是一个el标记,它只能在jsp页面中编译

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20500853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档