我正在开发一个项目,我需要使用AJAX向Spring控制器提交一个JSOn对象。但是我提交了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-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>
我是春天的新手,这是我的第一个项目。很确定我在映射方面做错了。
如果目录结构有帮助:
NewTestApp | 网页内容 | | -WEB-INF | | | | -web.xml | | -Spring-servlet.xml中 | | -jsp | | | | - checkDetails.jsp | -index.jsp
index.jsp能够调用checkDetails.jsp。此外,AJAX JSON提交没有问题,当我没有将它作为Spring MVC实现时,应用程序正常运行。
我是否需要为其添加另一个映射?
答案 0 :(得分:1)
调度程序servlet的servlet映射是* .html,因此您的请求也应该是/NewTestApp/chkDetails.html
,以便Spring控制器处理它。如果您希望它由/NewTestApp/chkDetails
处理,那么调度程序servlet映射应为/