我在调用servlet时遇到问题,所以我需要帮助。
这是我的web.xml
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ajaxServlet</servlet-name>
<servlet-class>org.finki.exercise.servlet.AjaxServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ajaxServlet</servlet-name>
<url-pattern>/ajaxServlet/*</url-pattern>
</servlet-mapping></servlet>
我有一个用于测试目的的jsp页面,我正在尝试从ajax调用servlet
<a href="#" onclick="loadXMLDoc('eva')">proba</a>
ajax fun
function loadXMLDoc(value1)
{
var xmlhttp;
var url="ajaxServlet";
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("mid_title").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", url+"?url="+value1, true);
xmlhttp.send();
}
function loadXMLDoc调用调度程序servlet http://localhost:8097/mavenproject1/test/ajaxServlet
。
如何调用ajaxServlet - http://localhost:8097ajaxServlet
???
谢谢!
答案 0 :(得分:4)
ajaxServlet
没有前导/
,因此它被解释为相对路径。因此,如果您从ajaxServlet
向http://localhost:8097/mavenproject1/test/foo
发送请求,请求将发送至http://localhost:8097/mavenproject1/test/ajaxServlet
。
因此,您需要添加一个前导/
。但这还不够,因为您还需要添加应用程序的上下文路径(/mavenproject1
)。在JSP页面中,您可以自动执行以下操作(假设您导入了JSTL标记库):
var url= "<c:url value = "ajaxServlet" />";
答案 1 :(得分:0)
这是因为你使用了一个相对链接,从单词ajaxServlet
开始。尝试改为
var url = "../ajaxServlet";
或者假设您有JSTL可用,
var url = "${pageContext.request.contextPath}/ajaxServlet";