AJAX POST Заявка, връщаща 404 на Spring MVC

Работя по проект, в който трябва да изпратя JSOn обект с помощта на AJAX към Spring контролера. Но получавам 404 при подаване. Моля, някой може ли да ми каже какъв е проблема:

Моята AJAX заявка:

    $.ajax({
        url: 'NewTestApp/chkDetails/',
        type : 'POST',
        data : 'pwd='+ p,       
        timeout: 15000,
        async : false,
        dataType: 'json',
                success: function (data, textStatus, jqXHR) {
                    displayThings(data);
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    $('#error').show();
            }
        });
    }
}

Моят контролер:

@RequestMapping(value = "/chkDetails", method = RequestMethod.POST)
@ResponseBody
public JSONObject getDetails(@RequestParam(value = "pwd")Object sPassword) throws IOException, ParseException
{
    JSONObject obj = (JSONObject) JSONValue.parse(sPassword.toString());
    JSONObject retObj;

    if(obj.isEmpty())
    {
        System.out.println("hihi");
    }       
    retObj = chk.chkStrength(obj);
    return retObj;  
}

Моят 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>*.html</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
</context-param>

and My spring-servlet.xml :

<context:component-scan
    base-package="main.pwd.controller" />


<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="suffix" value=".jsp" />
    <property name="prefix" value="/WEB-INF/jsp/" />
</bean>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="urlMap">           
        <map>
            <entry key="/checkDetails.html">
                <ref bean="PasswordServiceController"/>
            </entry>
        </map>
    </property>

</bean>
  <bean id="PasswordServiceController" class="main.pwd.controller.PasswordServiceController"> </bean>

I'm very new to spring and this is my first project. Pretty sure I've done something wrong with the mapping.

Ако структурата на директорията помага:

NewTestApp | Уеб съдържание | |-WEB-INF | | | |-web.xml | |-spring-servlet.xml | |-jsp | | | |- checkDetails.jsp |-index.jsp

index.jsp може да извика checkDetails.jsp. Освен това няма проблем с подаването на AJAX JSON, приложението работи перфектно, когато не го внедрявам като Spring MVC.

Трябва ли да добавя друго картографиране за него?


person Hitesh Patwari    schedule 17.07.2012    source източник
comment
Искам да изясня ... картографирането в spring-servlet.xml се прави, за да накара spring да разпознае страницата checkDetails.jsp ... При извикване на приложението се показва index.jsp, който съдържа href към checkDetails.jsp .. Моето приложение е базирано на REST. M прави POST заявка с помощта на java. така че приложението ми трябва да извика ... localhost:8080/NewTestApp/chkDetails .... Както е предложено от @Biju .... Опитах се да включа друго картографиране, но не работи.   -  person Hitesh Patwari    schedule 17.07.2012


Отговори (1)


Вашето съпоставяне на сървлета за диспечерски сървлет е *.html, така че вашите заявки също трябва да бъдат към /NewTestApp/chkDetails.html, за да се обработват от вашия Spring контролер. Ако искате да се обработва от /NewTestApp/chkDetails, тогава съпоставянето на диспечерския сървлет трябва да бъде /

person Biju Kunjummen    schedule 17.07.2012
comment
Добре ... проблемът е ... Ако промените картографирането на / само .., ity не разпознава моите JS & CSS файлове. Опитах се да добавя друго съпоставяне в web.xml ... но пак същия проблем. ‹servlet› ‹servlet-name›check‹/servlet-name› ‹servlet-class› org.springframework.web.servlet.DispatcherServlet ‹/servlet-class› ‹load-on-startup›1‹/load-on-startup › ‹/servlet› ‹servlet-mapping› ‹servlet-name›check‹/servlet-name› ‹url-pattern›/‹/url-pattern› ‹/servlet-mapping› - person Hitesh Patwari; 17.07.2012
comment
Добре, но работи ли json, ако поставите картографирането на сървлета си като /, ако го направи, тогава статичното съдържание е друг проблем, нали - вероятно можете да зададете друг въпрос за него, тъй като това може да е начинът, по който сте картографирали статичното си съдържание - можете да поставите <mvc:resources location="/static/" mapping="/static/**" /> за обработка на статичното съдържание - ако приемем, че вашето статично съдържание е в папка, наречена static - person Biju Kunjummen; 17.07.2012
comment
Не, не работи ... :( ... Копирах необходимата функция от JS файла в jsp и го изпробвах ... все още 404 - person Hitesh Patwari; 17.07.2012