1

サーブレットの呼び出しに問題があるため、サポートが必要です。これが私の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からサーブレットを呼び出そうとしています。

<a href="#" onclick="loadXMLDoc('eva')">proba</a>

ajax楽しい

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は、ディスパッチャサーブレットを呼び出します http://localhost:8097/mavenproject1/test/ajaxServlet
ajaxServletを呼び出す方法- http://localhost:8097ajaxServlet

4

2 に答える 2

4

ajaxServlet先頭に がない/ため、相対パスとして解釈されます。したがって、ajaxServletfromhttp://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 に答える