public void doFilter(
      ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
      throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    String uri = request.getParameter("uri");
    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    String rLastEdit = request.getParameter("lastEdit");
    if (rLastEdit == null) return;
    long userLastEdit = Long.parseLong(rLastEdit);
    if (clipStatus.hasAccess(request.getSession().getId(), uri)) {
      Connection con = dbCon.getConnection();
      try {
        Clip clip = ClipAgent.getInstance().loadClip(uri, con);
        if (clip != null) {
          DateFormat df = DateFormat.getDateTimeInstance();
          String textAreaValue = clip.getValue();
          Pattern p = Pattern.compile("</\\s*textarea", Pattern.CASE_INSENSITIVE);
          Matcher m = p.matcher(textAreaValue);

          textAreaValue = m.replaceAll("textarea");
          response.getOutputStream().write(textAreaValue.getBytes("UTF-8"));
        }
      } finally {
        dbCon.returnConnection(con);
      }
    } else {

      response.getOutputStream().print("");
    }
    response.getOutputStream().flush();
  }
 public void init(FilterConfig filterConfig) throws ServletException {
   clipStatus = ClipStatus.getInstance();
 }