2012-07-17 151 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