私は、JSPのフォームから入力を受け取り、JSONを使用してデータをサーブレットに渡す単純なAJAXアプリケーションをプログラミングしています。サーブレットには、次のような迅速で汚いコードがあります。
char[] charBuffer = new char[500];
String[] names;
String[] values = new String[20];
int amountRead;
JSONObject jsonObject1;
JSONObject jsonObject2;
PrintWriter out = response.getWriter();
BufferedReader in = request.getReader();
amountRead = in.read(charBuffer);
charBuffer[amountRead]='\0';
String invalue = new String( charBuffer, 0, amountRead);
その後try
、JSONオブジェクトでいくつかの処理を行うブロックが続きます。基本的には、演習として、同じフォームデータをやり取りして表示しようとしています。
問題は次のとおりです。もちろん、この迅速で汚いコードでは、リクエストから完全なメッセージを受け取る保証はありません。read()
ストリームの終わりに達した場合にのメソッドが-1を返すことを知っているのでBufferedReader
、次の追加を試みました。
while( in.read() != -1 ) {
amountRead = in.read(charBuffer);
}
ただし、これを実装すると、出力が空白になります。何も得られません。デバッガーでステップスルーしようとしても、そのwhile
ループが意図した効果をもたらさない理由は完全にはわかりません。
シンプルでバカなことだと思います。誰かが私のやり方の誤りを指摘するほど親切にできますか?いつものように、よろしくお願いします。