我想使用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文件的代码。
发布于 2013-12-11 01:56:51
当你调用
$.getJSON('VServlet', ... );您正在向相对于当前URL的URL发出HTTP GET请求。也就是说,如果您在/webapp/users/user.xhtml中,您将向/webapp/users/VServlet发送一个请求,该请求显然与servlet的URL模式不匹配,也不是您要实现的目标。
您需要考虑在视图中作为#{request.contextPath}可用的JSF应用程序的上下文路径,以构建适当的绝对URL
$.getJSON('#{request.contextPath}/VServlet', ... );这将向http://localhost:8080/webapp/VServlet发送一个请求。
如果您需要将请求发送到相对于根的路径,这样的请求URL以斜杠/开头,并代表相对于根的URL,无论您现在在哪里:
$.getJSON('/VServlet', ... );这将向http://localhost:8080/VServlet发送一个请求。
发布于 2013-12-13 03:10:37
如果js代码位于jsp页面中,而不是代码中。
$.getJSON('VServlet',function(data){ ... });
写
"$.getJSON('${request.contextPath}/VServlet',function(data){ ... });
否则,如果此代码位于某个js文件中的函数中,则如下所示
function someFunction(){
$.getJSON('VServlet', function(data){ ... });
}然后从jsp调用函数someFunction(),然后向该函数添加一个参数,如下所示-
function someFunction(url){
$.getJSON('VServlet', function(data){ ... });
}现在从jsp调用它,就像这样-
someFunction('${request.contextPath}/VServlet')
因为${request.contextPath}/VServlet是一个el标记,它只能在jsp页面中编译
https://stackoverflow.com/questions/20500853
复制相似问题