我需要发送401 response status code
和来自过滤器代码的自定义对象响应,如下所示:
res.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED)
使用上述代码,我能够发送代码,但不确定如何使用上述代码发送自定义对象。
答案 0 :(得分:0)
您可以使用下面的代码捕捉将字节写入响应。
response.getOutputStream().write(responseToSend);
下面的过滤器用于以json格式写入错误。
public class TestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
if(ANY CONDITION){
//ANY POJO CLASS
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setCode(401);
errorResponse.setMessage("Unauthorized Access");
byte[] responseToSend = restResponseBytes(errorResponse);
((HttpServletResponse) response).setHeader("Content-Type", "application/json");
((HttpServletResponse) response).setStatus(401);
response.getOutputStream().write(responseToSend);
return;
}
//ANY OTHER BUSINESS LOGIC
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
private byte[] restResponseBytes(ErrorResponse eErrorResponse) throws IOException {
String serialized = new ObjectMapper().writeValueAsString(eErrorResponse);
return serialized.getBytes();
}
}