以下为转载内容
好长一段时间以来都只是写些测试代码,好久没写项目代码了,以至于sping那套东西日渐生疏了。最近在折腾一个小项目,写了一个controller用来响应ajax请求,结果断点调试发现一直返回"404 ...not response...",折腾了快2小时,一直没想到是注解的问题,万般无赖之下上了度娘,方才如梦初醒,特意记录一下,一来提醒一下自己,二来也让跟我遇到一样问题的朋友少受些折磨。
这个注解表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用。
在使用@RequestMapping后,返回值通常解析为跳转路径。加上@responsebody后,返回结果直接写入HTTP response body中,不会被解析为跳转路径。比如异步请求,希望响应的结果是json数据,那么加上@responsebody后,就会直接返回json数据。
- <pre code_snippet_id="2127366" snippet_file_name="blog_20170114_1_8611268" name="code" class="java"> @RequestMapping(value="/publish" ,produces="application/json;charset=UTF-8")
- public Object publish()throws Exception{
- Map<String,String> map = new HashMap<String,String>();
- ModelAndView mv = this.getModelAndView();
- PageData pd = new PageData();
- pd = this.getPageData();
- 。。。
- map.put("result", "success");
- return AppUtil.returnObject(new PageData(), map);
- }</pre><br>
- <br>
- <pre></pre>
- 例如,在我用来想应阿贾克斯请求的上述方法中,因为没加@responsebody, responseCode一直是404。后来像下面这样加上后, responseCode就是200了,一切正常了。
- <p></p>
- <p></p>
- <pre code_snippet_id="2127366" snippet_file_name="blog_20170114_2_1861845" name="code" class="html"><pre code_snippet_id="2127366" snippet_file_name="blog_20170114_2_1861845" name="code" class="java"> @RequestMapping(value="/publish" ,produces="application/json;charset=UTF-8")
- @ResponseBody
- public Object publish()throws Exception{
- Map<String,String> map = new HashMap<String,String>();
- ModelAndView mv = this.getModelAndView();
- PageData pd = new PageData();
- pd = this.getPageData();
- 。。。
- map.put("result", "success");
- return AppUtil.returnObject(new PageData(), map);
- }</pre><br>
- <br>
- <pre></pre>
- <p></p>
- <p></p>
- <p></p>
- <pre></pre>
- <pre></pre>
-
- </pre>