使用Spring MVC返回Http状态码


来源:项目中的Ajax请求Session超时问题。

 

如何正确的处理Session超时问题,之前在项目中判断session超时或者未登录时,是直接返回jsp页面。这样的方式只能对请求不是ajax请求生效,如果是ajax请求则无法正确的跳转。

经过与前端同学沟通后,确定返回http状态码401来确认需要跳转登录。

首先,当session超时时,shiro会跳转到login方法中,在login方法中判断是否是ajax请求,如果不是则返回页面,如果是则返回状态码401.

最开始时,想用response.setStatus方法来填写状态码,并且在请求方法上加上了@Responsebody的注解,发现返回的始终是200状态码。

后来把注解去掉,并且使用restful中的ResponseEntity类来返回状态码。也就是返回的是一个ResponseEntity对象。

    @RequestMapping("${adminPath}/login/sessionTimeout")
    public ResponseEntity sessionTimeout() throws IOException {
        return new ResponseEntity(HttpStatus.UNAUTHORIZED);
    }

这样返回给前端的响应头中状态码就是401了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM