gpt4 book ai didi

java - HttpServletResponse.sendError 之后过滤器中需要返回

转载 作者:行者123 更新时间:2023-12-02 13:48:27 26 4
gpt4 key购买 nike

我看到一些帖子说Servlet Filter中的repsonse.sendError之后需要返回,是否需要?如果是这样,为什么?

public class AuthorizationSecurityFilter extends OncePerRequestFilter {
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
boolean isAuth = //call to authenticate request
if (isAuth) {
chain.doFilter(request, response);
} else {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return; //this needed?
}
}

}

最佳答案

我对 servlet 不太了解,但是 return 语句实际上没有用,会被编译器删除。

javadoc说“使用此方法后,响应应被视为已提交,而不应被写入。”我猜你指的是这个。

想象一下这个片段:

if( anyErrorCondition(request) ) {
response.sendError(HttpServletResponse.SC_FORBIDDEN);
}
// Further processing

在这种情况下,您绝对应该在调用 sendError 后使用 return 语句,因为您想阻止进一步处理。

这不适用于您的示例,该示例在发送错误代码后不会处理请求,而是会到达方法末尾并返回。

总结:不,这里不需要return语句,只要能保证调用sendError后请求不会被处理即可。

关于java - HttpServletResponse.sendError 之后过滤器中需要返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21208180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com