使用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了。

转载于:https://www.cnblogs.com/pengjian-one/p/7904879.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值