Различия между ServletResponse и HttpServletResponseWrapper?

Я новичок в сервлетах и ​​читаю текст о фильтрах и оболочках. Я понимаю фильтры, но запуталась насчет оберток. В книге автор приводит пример:

В случае отсутствия оболочки:

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

В случае оболочки:

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

Зачем нам нужен HttpServletResponseWrapper , тогда как мы можем сделать то же самое с ServletResponse в случае 1? Может ли кто-нибудь дать мне четкий пример того, что мы ДОЛЖНЫ использовать HttpServletResponseWrapper вместо ServletResponse ? Я пытался погуглить, но мне не повезло.

13
задан BalusC 12 August 2011 в 22:16
поделиться