UNIXで実行されるJavaを使用して単純なWebサーバークラスをプログラムしようとしています。
WebServerクラスは、要求に基づいてHTMLを生成するperlスクリプトを呼び出します。
このことを考慮:
- クライアントはHTTPPOSTリクエストをWebサーバーに送信します
- HTTP POST本文を読む:
"description=asd&action=add"
byte[] byteParams
以下に示すように書き込まれたHTTPPOST本文byteParams
適切なHTMLを生成するには、PerlProcessオブジェクトに書き込む必要があります
コード:
String postParams = "/usr/bin/env REQUEST_METHOD=POST QUERY_STRING= " +" CONTENT_LENGTH=" + contentLength + " CONTENT_TYPE=" + contentType + " /usr/bin/perl " + filename;
Process perlProcess = Runtime.getRuntime().exec(postParams);
DataOutputStream writeToPerl = new DataOutputStream(perlProcess.getOutputStream());
//write the http post request body to writeToPerl
writeToPerl.write(byteParams, 0, byteParams.length);
InputStreamReader readFromPerlInputStream = new InputStreamReader(perlProcess.getInputStream());
BufferedReader readFromPerl = new BufferedReader(readFromPerlInputStream);
BufferedReader readFromPerlError = new BufferedReader(new InputStreamReader(perlProcess.getErrorStream()));
これで、UNIXの環境変数を読み取って適切なHTMLを生成するperlProcessオブジェクトができました。
Perl ProcessオブジェクトのDataOutputStreamに書き込んだ後、入力(HTTP Post本文)に基づいて標準出力に自動的に書き込みますか?
または、先ほど書き込んだ内容を読み取るようにProcessオブジェクトに指示する必要がありDataOutputStream writeToPerl
ますか?