0

こんにちは。私は、PDF ファイルと、そのファイルで行われた処理のメッセージ ログを返さなければならないサーブレットに取り組んでいます。

これまでのところ、次のように、ユーザーの選択に応じて、ログまたはファイルを評価して返すブール値を渡しています。

            //If user Checked the Download PDF
        if (isDownload) {
            byte[] oContent = lel;
            response.setContentType("application/pdf");
            response.addHeader("Content-disposition", "attachment;filename=test.pdf");
            out = response.getOutputStream();
            out.write(oContent);
        } //If user Unchecked Download PDF and only wants to see logs
        else {
            System.out.println("idCompany: "+company);
            System.out.println("code: "+code);
            System.out.println("date: "+dateValid);
            System.out.println("account: "+acct);
            System.out.println("documentType: "+type);

            String result = readFile("/home/gianksp/Desktop/Documentos/Logs/log.txt");
            System.setOut(System.out);

            // Get the printwriter object from response to write the required json object to the output stream      
            PrintWriter outl = response.getWriter();
            // Assuming your json object is **jsonObject**, perform the following, it will return your json object  
            outl.print(result);
            outl.flush();
        }

両方の商品を同時に返品する効率的な方法はありますか?

どうもありがとうございました

4

2 に答える 2

1

HTTP プロトコルでは、1 つの HTTP 要求に対して複数の HTTP 応答を送信することはできません。この制限を念頭に置いて、次の代替案を考えることができます。

  1. たとえば、イベント ハンドラーを指定して、クライアントに 2 つの HTTP 要求をonclick発行させます。または、最初の応答で HTML ページを返した場合は、 または で別の要求を発行できwindow.loadますpage.ready
  2. 彼がダウンロードしたいものを選択する機会を提供し、それに応じてサーブレットで動作します。彼が PDF を選択した場合 - PDF を返します。彼がテキストを選択した場合 - テキストを返し、両方を選択した場合 - それらをアーカイブにパックして返します。

最初のバリアントは不器用でユーザーフレンドリーではないことに注意してください。私に関する限り、絶対に避けるべきです。ユーザーが何を取得するかを制御するページは、はるかに優れた代替手段です。

于 2013-03-20T06:44:48.280 に答える
0

それらを DTO オブジェクトにラップするか、セッションに配置して JSP から参照することができます。

于 2013-03-19T20:18:48.597 に答える