2012-07-17 148 views
0

我正在開發一個項目,我需要使用AJAX向Spring控制器提交JSOn對象。但是我提交404。請,有人可以告訴我是什麼問題:AJAX POST在Spring MVC上返回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> 

和我的spring-s ervlet.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> 

我很新的春天,這是我的第一個項目。很確定我已經做了錯誤的映射。

如果目錄結構有助於:

NewTestApp | 網絡內容 | | -WEB-INF | | | | -web.xml | | -spring-servlet.xml | | -jsp | | | | - checkDetails.jsp | -index.jsp

index.jsp能夠調用checkDetails.jsp。另外,AJAX JSON提交沒有問題,當沒有將它作爲Spring MVC實現時,該應用程序可以很好地工作。

我是否需要爲其添加另一個映射?

+0

我想講清楚......在彈簧servlet.xml中的映射做是爲了使彈簧承認checkDetails.jsp頁.. 。在應用程序調用中顯示「index.jsp」,其中包含對「checkDetails.jsp」的href ... IMy應用程序是基於REST的。 M使用java做POST請求。所以我的應用程序應該調用... http:// localhost:8080/NewTestApp/chkDetails .... 正如@Biju提示....我試圖包括另一個映射,但它不工作。 – 2012-07-17 16:36:06

回答

1

您的調度程序servlet的servlet映射是* .html,所以您的請求也應該是/NewTestApp/chkDetails.html,以便您的Spring控制器處理它。如果你想讓它由/NewTestApp/chkDetails進行處理,然後調度servlet映射應該/

+0

好的......問題是......如果只將映射改爲「/」,那麼這個文件不能識別我的JS和CSS文件。我試圖在web.xml中添加另一個映射......但仍然是同樣的問題。 \t \t \t 檢查 \t \t \t \t \t org.springframework.web.servlet。DispatcherServlet的 \t \t \t \t <負載上啓動> 1 \t \t \t \t 檢查 \t \t / \t 2012-07-17 16:03:03

+0

好的,但確實JSON的工作,如果你把你的servlet映射爲'/',如果它不那麼靜態內容一個不同的問題 - 你可能會問另一個問題,因爲它可能是你已經映射你的stati的方式c內容 - 假設您的靜態內容位於名爲static的文件夾中,您可以放置​​一個用於處理靜態內容的' – 2012-07-17 16:31:31

+0

否它不工作...... :(...從jsp中的JS文件Icopied必要的功能,並試圖...仍404 – 2012-07-17 17:30:49