server code String name = request.getParameter("name");
System.out.println("name:"+name);
InputStream in = request.getInputStream();
int read=-1;
System.out.println("in:"+in.available());
System.out.println("=============");jsp:<form method="post"  action = "/proxy/servlet/Proxy">
   <input type="text" name="name" >
   <input type="submit">
   </form>
控制台打印的结果是:name:se
in:0为什么System.out.println("in:"+in.available());   in.available()是0呢把这二句(String name = request.getParameter("name");
System.out.println("name:"+name);)注释掉了,结果还是这样
in 取到值,可为什么available会是0呢

解决方案 »

  1.   

    修改成这样你再试试:
    <form method="post" enctype="multipart/form-data" action = "/proxy/servlet/Proxy">
        <input type="text" name="name" />
        <input type="file"name="file"/>//上传一个文件
        <input type="submit"/>
    </form>
      

  2.   

    available
    public int available()
                  throws IOException返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。下一个调用可能是同一个线程,也可能是另一个线程。一次读取或跳过此估计数个字节不会受阻塞,但读取或跳过的字节数可能小于该数。 
    注意,有些 InputStream 的实现将返回流中的字节总数,但也有很多实现不会这样做。试图使用此方法的返回值分配缓冲区,以保存此流所有数据的做法是不正确的。 如果已经调用 close() 方法关闭了此输入流,那么此方法的子类实现可以选择抛出 IOException。 类 InputStream 的 available 方法总是返回 0。 此方法应该由子类重写。 
    返回:
    可以不受阻塞地从此输入流读取(或跳过)的估计字节数;如果到达输入流末尾,则返回 0。 
    抛出: 
    IOException - 如果发生 I/O 错误。
      

  3.   

    类 InputStream 的 available 方法总是返回 0。  
    学习了!
    LZ的例子虽然in.available()的返回值是0,但是,实际上数据是可以取得的。
    InputStream in=request.getInputStream();
    BufferedReader br=new BufferedReader(new InputStreamReader(in));
    String line="";
    while((line=br.readLine())!=null)
    {
     out.print(line);
     out.print("<br>");
    }
      

  4.   

    问题解决:是因为我getInputStream 之前,用了getParameter()方法,导致出现这样的问题了