Diferencias entre ServletResponse y HttpServletResponseWrapper?

Soy nuevo en servlet y leo algunos textos sobre filtros y envoltorios. Puedo entender los filtros pero me confundí con los envoltorios. En el libro, el autor da un ejemplo:

En caso de que no haya envoltorio:

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

        String name = request.getParameter("name").trim();

        try {
            chain.doFilter(request, response);
            PrintWriter out = response.getWriter();
            if (name.length() == 0) {
                out.println("Some message");
                out.println("</body>");
                out.println("</html>");
                out.close();
            }
        } catch (Throwable t) {
        }
    }

En caso de envoltura:

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

        String name = request.getParameter("name").trim();

        HttpServletResponse httpRes = (HttpServletResponse) response;
        HttpServletResponseWrapper resWrapper = new HttpServletResponseWrapper(httpRes);
        try {
            chain.doFilter(request, response);

            PrintWriter out = resWrapper.getWriter(); // why dont we just use response.getWriter();
            if (name.length() == 0) {
                out.println("<h3>Some message");
                out.println("</body>");
                out.println("</html>");
                out.close();
            }
        } catch (Throwable t) {
        }
    }

Por qué necesitamosHttpServletResponseWrapper mientras que podemos hacer lo mismo conServletResponse en el caso 1? ¿Alguien puede darme un ejemplo claro de que DEBEMOS usarHttpServletResponseWrapper en lugar deServletResponse? Intenté buscar en Google pero no encontré suerte.

Respuestas a la pregunta(2)

Su respuesta a la pregunta