java runtime 6_返回Http状态代码的Java6 RuntimeException

我发现

another post显示了我们如何创建自己的已检查异常,这些异常也返回不同于500的HTTP状态代码.但是,我需要它是RuntimeException.

然后,我发现

WebApplicationException是一个未经检查的异常,返回HTTP状态代码但不允许我像常规异常中那样设置消息.

Java EE 6中是否存在任何未经检查的异常,允许我像常规异常一样设置错误消息,并返回我可以设置的HTTP状态代码?

编辑:包括John为什么要这样做的解释.

我创建了一个过滤器来捕获我的请求参数中的HTML和XSS攻击.而不是每次在Filter.doFilter中检查它都太慢,我扩展了HttpServletRequestWrapper并像这样使用它.

HttpFilterRequest implements Filter

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

try {

chain.doFilter(new SafeHttpRequest((HttpServletRequest) request), response);

} catch (SecurityViolationException e) {

log.warn(format("A security violation was detected. Please enable debug for further details: %s]", e.getMessage()));

HttpServletResponse resp = (HttpServletResponse) response;

resp.sendError(e.getStatusCode());

}response);

}

SafeHttpRequest extends HttpServletRequestWrapper (supressing parts to shorten code)

@Override

public String getParameter(String parameter) {

return xssAndHtmlValidation(super.getParameter(parameter));

}

@Override

public String getHeader(String name) {

return xssAndHtmlValidation(super.getHeader(name));

}

xssAndHtmlValidation()抛出SecurityViolationException,这是一个RuntimeException,但doFilter的catch块不起作用,因为我的异常是作为包含SecurityViolationException的ServletException抛出的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值