记录SpringMVC 接口开发 在拦截器中使用response返回json 响应出现404问题

首先说下事情的起因,新开了一个项目给app做接口服务,使用框架SSM, 应为接口用到了签名, 就是时间戳,随机数,appId, appKey等保证接口安全, 这个就不多说了, 主要是在接口和返回是都要传递json字符串数据, 于是使用了拦截器, 

拦截器的三个函数使用了两个 一个是preHandle接收时校验签名, 一个是afterCompletion响应时对响应数据签名然后返回json格式,

问题出在响应时


记录SpringMVC 接口开发 在拦截器中使用response返回json 响应出现404问题_第1张图片

这样看来一点问题也没有, controller这么写的

记录SpringMVC 接口开发 在拦截器中使用response返回json 响应出现404问题_第2张图片

这样就出现了问题 在响应是说找不到路径

 WARN PageNotFound.noHandlerFound:1147 - No mapping found for HTTP request with URI [/olcarapi/api/api/test1111] in DispatcherServlet with name 'dispatcher'

发现request with URI [/olcarapi/api/api/test1111] , 

多了路径上的 @RequestMapping ( "/api" ) 有两个/api  
终于找到了原因

如果controller返回值是void  Spring MVC会认为@RequestMapping注解中指定的路径就是要返回的视图name  

解决办法是 在方法里定义HttpServletResponse 参数 这样spring就不会取path为视图名字了

记录SpringMVC 接口开发 在拦截器中使用response返回json 响应出现404问题_第3张图片


解决办法2, 不定义response参数 在spring-mvc.xml中定义视图解析器, 也可以解决这个问题

  
    
        
        
        
    

你可能感兴趣的:(后端)