在使用spring mvc,用ajax请求调用返回json数据时遇到了这么一个问题,下面是Controller的代码:
import org.springframework.ui.Model;import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/test")
public class TestController {
/**
* test测试
*/
@RequestMapping(value = "/ok", method = RequestMethod.GET)
public void testOK(HttpServletRequest request, Model model) {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>OK>>>>>>>>>>>>>>>>>");
//业务代码
}
}
由于一开始写页面的时候不小心把请求写成了直接调用链接“http://......./test/ok”(要求返回json数据,正确的应该是“http://......./test/ok?_format=json”),出现以下结果:
>>>>>>>>>>>>>>>>>>>>>>>>>>OK>>>>>>>>>>>>>>>>>
[test][WARN ] 08-01 15:51:34,127 | No mapping found for HTTP request with URI [...../test/test/ok] in DispatcherServlet with name 'springmvc'
[test][ERROR] 08-01 15:51:34,142 |
也就是说这个请求已经正常执行过了,但是随后又发起了一个多余的请求,这个多余的请求地址是“...../test/test/ok”,也就是比调用的链接地址“...../test/ok”多了一个test,百思不得其解,然后又把返回值改为一个字符串,仍然不行,直到发现没有加参数“_format=json”,使用“http://......./test/ok?_format=json”访问一切正常。
有时间再研究一下spring mvc的代码,看一下DispatcherServlet是如何处理的。