package filters;import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletRequestWrapper; public class TomcatFormFilter implements Filter { 
class Request extends HttpServletRequestWrapper
    {
      
         public Request(HttpServletRequest request)   {
            super(request);} 
         
         
         public String toChi(String input)  {
             try{
               byte[] bytes=input.getBytes("ISO8859-1");
               return new String(bytes,"GBK");
              }
              catch (Exception ex) {
              }
              return null;
         }
         private HttpServletRequest getHttpServletRequest()
         {
            return (HttpServletRequest)super.getRequest();
         }
         public String getParameter(String name)
         {
            return toChi(getHttpServletRequest().getParameter(null));
         }
         public String[] getParanameterValues(String name)
         {
             String values[] = getHttpServletRequest().getParameterValues(name);
             if (values !=null) {
              for (int i = 0; i < values .length; i++){
                values[i] = toChi(values[i]);
              }
             }
             return values;
         }
        }
         public void destroy(){
          
         }
public void doFilter(ServletRequest request, ServletResponse response, 
        FilterChain chain) throws IOException, ServletException { 
HttpServletRequest httpreq =  (HttpServletRequest)request;
if(httpreq.getMethod().equals("POST")){
request.setCharacterEncoding("GBK");
}else {
request= new Request(httpreq);
}

System.out.println();
chain.doFilter(request, response); 
} public void init(FilterConfig config) throws ServletException { 
}
}
怎么测试,在线等,谢谢,我是初学。

解决方案 »

  1.   

    断点调试 or 输出 LOG
      

  2.   

    我印象里是system.out不过我不确定。麻烦能标注一下在哪里添加语句么。
      

  3.   

    如果 LOG 你不会用的话,那就先用 System.out.println 输出就可以了。
      

  4.   


    楼主大概是问怎么用JUNIT测试吧。
      

  5.   


    我知道一种方法,可以测试servlet,顺便把listener也测试了。
    不过需要jetty 和 maven 支持。package eg;import org.mortbay.jetty.Connector;
    import org.mortbay.jetty.Server;
    import org.mortbay.jetty.bio.SocketConnector;
    import org.mortbay.jetty.servlet.ServletHandler;
     
    import com.meterware.httpunit.WebConversation;
    import com.meterware.httpunit.WebResponse;
     
    import junit.framework.Assert;
    import junit.framework.TestCase;
     
    public class JettySampleTest extends TestCase {
     
     Server server;
     protected void setUp() throws Exception {
          //通过代码设置并启动一个服务器,该服务器是servlet的测试容器
          super.setUp();
          server = new Server();
          Connector connector=new SocketConnector();
          connector.setPort(80);
          server.setConnectors(new Connector[]{connector});
          ServletHandler handler=new ServletHandler();
          server.setHandler(handler);
          handler.addServletWithMapping("Cactus.HelloWorld", "/");
          server.start();
     }
     
     protected void tearDown() throws Exception {
      super.tearDown();
      server.stop();
     }
     
     public void testHellWorld() {
      try {
       WebConversation wc = new WebConversation();
       WebResponse web = wc.getResponse("http://127.0.0.1/HelloWorld");
       String result=web.getText();
       Assert.assertEquals(result,"null:Hello World!");
      
      } catch (Exception e) {
       e.printStackTrace();
      }
     }
    }
      

  6.   

    System or Log 测试不了么?
      

  7.   

    使用Jnuit来测试吧....网上有test case 的...或者Syso   或者  LOG