public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DataOutputStream  oStream = null;
DataInputStream  iStream = null;

        try {

iStream = new DataInputStream(request.getInputStream());
oStream = new DataOutputStream(response.getOutputStream());
oStream.writeInt(100);
oStream.writeBoolean(false);
oStream.writeLong(12345L);
oStream.writeUTF("Hello world!");
oStream.write("测试字符串".getBytes()); StringBuffer sb = new StringBuffer(); int   m;
while((m = iStream.read()) != -1){ //没有进while循环,因为读出来的是-1,怎么样才能让它读出来不为-1呢!!!
     sb.append(m);
     System.out.println("sb:"+sb);
}

//log4j.fatal("客户端传递数据:[" + sb + "]。服务器接收时间:" + new Date());
new InsertInToDB().save(sb.toString(), new java.util.Date()); } catch (IOException ie) {
ie.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
}

解决方案 »

  1.   

    数据是通过http协议从客户端传过来的!!
      

  2.   

    // 试下这个方法, 第一个数 request.getInputStream() ,  第二个参数为文件保存路径
       public boolean saveFile(InputStream inputStream,String url){  
       boolean result=true;
       BufferedInputStream bin = null;
       FileOutputStream fout = null;
       BufferedOutputStream bout = null;
       
       try {
    bin = new BufferedInputStream(inputStream, 1024);
    File file = new File(url);
    byte[] buff = new byte[1024];
    fout = new FileOutputStream(file);
    bout = new BufferedOutputStream(fout, 1024);
    int rc = 0;
    while ((rc = bin.read(buff, 0, 1024)) > 0) {
    bout.write(buff, 0, rc);
    }
    bout.close();
    fout.close();
    bin.close();
        inputStream.close();
    } catch (Exception e) {
    e.printStackTrace();
    result = false;
    try {
    inputStream.close();
    bin.close();
    fout.close();
    bout.close();
    } catch (Exception ex) {
    e.printStackTrace();
    }
    } finally {
    inputStream = null;
    bin = null;
    fout = null;
    bout = null;
    System.gc();
    }
    return result;
       }
      

  3.   

    你这样不行的,你要按照我的来,需要通过http协议的
    数据是从客户端传过来的,现在是read读出来的为-1,
    兄弟,试下别的行不行,能让数据进while循环就行!!
      

  4.   

    iStream = new DataInputStream(request.getInputStream());
    oStream = new DataOutputStream(response.getOutputStream());
    oStream.chinese wholesalers
    ugg(100);
    oStream.writeBoolean(false);
    oStream.writeLong(12345L); 
      

  5.   

    还有就是我这里不需要保存路径
    new InsertInToDB().save(sb.toString(), new java.util.Date()); 
    是将它插入数据库!!!!
      

  6.   

    大哥 你就按照我的代码 把下面的new InsertInToDB().save(sb.toString(), new java.util.Date()); 不要
    你试下行不行,分我会给你的
      

  7.   

    new InsertInToDB().save(sb.toString(), new java.util.Date()); 是我把读出来的数据插入数据库的一个动作,这个先不要,先能让我把客户端发过来的数据读取出来就行了!!
      

  8.   

    lz 用的是http协议中的哪种传输方式呀??
      

  9.   

    页面请求是不是POST方式发送啊。
      

  10.   

    m = iStream.read()
    M是INT型,而你读出来(iStream.read())的是INT型的吗?
    如果不是的话,那肯定不对
    只是随便看看
      

  11.   

    可以打印一下你的iStream.read()究竟是什么值不就可以解决了吗?