Diferenças entre ServletResponse e HttpServletResponseWrapper?

Sou novo no servlet e leio algum texto sobre filtros e invólucros. Eu entendo os filtros, mas fiquei confuso sobre os invólucros. No livro, o autor dá um exemplo:

No caso de nenhum invólucro:

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) {
        }
    }

No caso de invólucro:

 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 que precisamosHttpServletResponseWrapper enquanto podemos fazer a mesma coisa comServletResponse no caso 1? Alguém pode me dar um exemplo claro de que DEVEMOS usarHttpServletResponseWrapper ao invés deServletResponse? Tentei pesquisar no Google, mas não tive sort

questionAnswers(2)

yourAnswerToTheQuestion