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

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

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

问题出在响应时



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


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

 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为视图名字了



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

  <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="order" value="1"></property>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值