FrameworkServlet skips HttpServletResponse.getStatus() call on Servlet 2.5

Issue: SPR-12151
master
Juergen Hoeller 10 years ago
parent 86c3c7eb96
commit 7953c5fd88
  1. 12
      spring-webmvc/src/main/java/org/springframework/web/servlet/FrameworkServlet.java

@ -161,6 +161,11 @@ public abstract class FrameworkServlet extends HttpServletBean implements Applic
private static final String INIT_PARAM_DELIMITERS = ",; \t\n"; private static final String INIT_PARAM_DELIMITERS = ",; \t\n";
/** Checking for Servlet 3.0+ HttpServletResponse.getStatus() */
private static final boolean responseGetStatusAvailable =
ClassUtils.hasMethod(HttpServletResponse.class, "getStatus");
/** ServletContext attribute to find the WebApplicationContext in */ /** ServletContext attribute to find the WebApplicationContext in */
private String contextAttribute; private String contextAttribute;
@ -1054,16 +1059,19 @@ public abstract class FrameworkServlet extends HttpServletBean implements Applic
} }
} }
private void publishRequestHandledEvent(HttpServletRequest request, HttpServletResponse response, long startTime, Throwable failureCause) { private void publishRequestHandledEvent(
HttpServletRequest request, HttpServletResponse response, long startTime, Throwable failureCause) {
if (this.publishEvents) { if (this.publishEvents) {
// Whether or not we succeeded, publish an event. // Whether or not we succeeded, publish an event.
long processingTime = System.currentTimeMillis() - startTime; long processingTime = System.currentTimeMillis() - startTime;
int statusCode = (responseGetStatusAvailable ? response.getStatus() : -1);
this.webApplicationContext.publishEvent( this.webApplicationContext.publishEvent(
new ServletRequestHandledEvent(this, new ServletRequestHandledEvent(this,
request.getRequestURI(), request.getRemoteAddr(), request.getRequestURI(), request.getRemoteAddr(),
request.getMethod(), getServletConfig().getServletName(), request.getMethod(), getServletConfig().getServletName(),
WebUtils.getSessionId(request), getUsernameForRequest(request), WebUtils.getSessionId(request), getUsernameForRequest(request),
processingTime, failureCause, response.getStatus())); processingTime, failureCause, statusCode));
} }
} }

Loading…
Cancel
Save