1

我在调用 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>

阿贾克斯的乐趣

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();
            }

函数 loadXMLDoc 调用调度程序 servlet http://localhost:8097/mavenproject1/test/ajaxServlet
如何调用 ajaxServlet - http://localhost:8097ajaxServlet

4

2 回答 2

4

ajaxServlet没有前导/,因此它被解释为相对路径。因此,如果您向ajaxServletfrom发送请求http://localhost:8097/mavenproject1/test/foo,请求将被发送到http://localhost:8097/mavenproject1/test/ajaxServlet

因此,您需要添加前导/. 但这还不够,因为您还需要添加应用程序的上下文路径 ( /mavenproject1)。在 JSP 页面中,您可以自动执行如下操作(假设您导入了 JSTL 标签库):

var url= "<c:url value = "ajaxServlet" />";
于 2013-01-22T18:32:25.907 回答
0

这是因为您使用的是相对链接,以单词开头ajaxServlet。试试吧

var url = "../ajaxServlet";

或者,假设您可以使用 JSTL,

var url = "${pageContext.request.contextPath}/ajaxServlet";
于 2013-01-22T18:35:42.100 回答