我现在想做一个过滤jsp特定内容的过滤器,不知道怎么做这个过滤器,请有做过的说明一下如何去做,我现在特别想知道,如何得到jsp的响应内容,如何将修改后的响应内容发送出去,还望高手指点

解决方案 »

  1.   

    是啊,我也是想用过滤器的;但是有两个基本问题尚待解决:
    1、如何得到jsp的响应内容,就是原始的内容;
    2、如何将修改后的响应内容发送出去,送到响应端。
      

  2.   

    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    import java.io.PrintWriter;public class CN_Filter implements Filter
    {
        public void destroy()
        {
        }    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException
        {
            //用过滤器设置编码后再传给相应的servlet
            req.setCharacterEncoding("GBK");
            try
            {
            chain.doFilter(new RequestWrapper((HttpServletRequest) req), resp);
            }catch (Exception e)
            {
                PrintWriter out=resp.getWriter();
                out.println("<script>history.back();</script>");
                return;
            }
        }    public void init(FilterConfig config) throws ServletException
        {    }}2、这二个类,,在这个类里过滤import java.util.*;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;public class RequestWrapper extends HttpServletRequestWrapper {    //Map realParameters = new HashMap();    public RequestWrapper(HttpServletRequest request) {
            super(request);
        }    public String getParameter(String string){
            String value= super.getParameter(string);
            if(value!=null&&value.indexOf("script")!=-1){
                value=value.replaceAll("script","scri pt");
            }        return value;
        }}3、web.xml加上    <filter>
            <filter-name>CN_Filter</filter-name>
            <filter-class>CN_Filter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>CN_Filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
      

  3.   

    多谢,我这儿也找到一个,从more servlets and jsp中摘录的,public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
                             throws ServletException, IOException {
      CharArrayWrapper responseWrapper =
      new CharArrayWrapper((HttpServletResponse)response);
       // Invoke resource, accumulating output in the wrapper.
      chain.doFilter(request,responseWrapper);
      // Turn entire output into one big String.
      String responseString = responseWrapper.toString();
      // In output, replace all occurrences of target string
      // with replacement string.
      responseString =
                FilterUtils.replace(responseString,
                 getTargetString(),
                 getReplacementString());
      // Update the Content-Length header.
      updateHeaders(response, responseString);
      PrintWriter out = response.getWriter();
      out.write(responseString);
    }