我有一个Java EE项目,其Web服务受Web容器身份验证保护。 (HTTP-basic)(我们可以说在这个上下文中:Web服务是servlet) A想修改servlets响应头。使用servlet过滤器不是一个好的解决方案,因为我想在用户身份验证失败的情况下访问响应对象。 (在这种情况下,servlet过滤器不会运行,因为容器不会调用它)
原因是,我想更改HTTP状态代码401和403.这是因为客户端是由Web Start分发的,我不想让javaws修改我的客户端应用程序请求标头。
有一个ServletRequestListener监听器,但它不适合我,因为我想访问响应对象,而不是请求。
感谢。
答案 0 :(得分:1)
只需复制参加答案
在web.xml中:
<error-page>
<error-code>401</error-code>
<location>/error.jsp</location>
</error-page>
的error.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<%
int status = response.getStatus();
if (status == 401) {
response.setStatus(403);
}
%>
</body>
</html>