Filter拦截返回数据封装

   通过Filter进行拦截后,如果拦截不放行,由于doFilter 方法返回的是void,则客户端request请求返回无任何数据,如果想自定义返回数据则需要单独处理(注意:在doFilter中采取直接throw new Exception方式无效)
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    if(!file.isFile()){
        this.sendResponse(servletResponse,ApiError.SYSTEM_INACTIVE_ERROR);
        return ;
	}
    filterChain.doFilter(servletRequest, servletResponse);
}
/**
* 自定义返回数据
*/
private void sendResponse(ServletResponse servletResponse,ApiError apiError){
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    response.setStatus(HttpStatus.OK.value());
    response.setCharacterEncoding("utf-8");
    response.setContentType("application/json; charset=utf-8");
    try (PrintWriter out = response.getWriter()) {
        ResponseVO tandemResponse = ResponseVO.failed(apiError);
        String json = SpringContextUtil.getBean("jacksonObjectMapper", ObjectMapper.class).writeValueAsString(tandemResponse);
        out.print(json);
    } catch (IOException e) {
        log.error("sendResponse error:", e);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值