servletがデータを返す方法

2997 ワード

servletがデータを返す方法
方法
1.RequestDispatcher.forward()インタフェースジャンプ
    HttpSession  session =request.getSession();
        Object obj = session.getAttribute (LoginConstants.LOGIN_USER);
        if (null != obj)
        {
            session.removeAttribute (LoginConstants.LOGIN_USER);
        }
        /**
        *    :      (          )
        */
        RequestDispatcher dispatcher = request.getRequestDispatcher("clearUserInfo.html?flag=1");
       /**
        *    :    request 
        */
        //          
         Object result = new Object();
         //      
        ObjectMapper mapper = new ObjectMapper();  
        //writeValueAsString         json   ;
        request.setAttribute("returnMessage", mapper.writeValueAsString(result));
        dispatcher.forward(request, response); 

2.戻り値を文字ストリームまたはバイトストリームで出力します.フロントで受信する場合は、Ajaxのdatatypeなどの文字列で「text」にする必要があります.
、json文字列形式を返します...
            PrintWriter out = response.getWriter();
            // :ServletOutputStream out = response.getOutputStream();
            //        !
            out.write("[{\"id\":1,\"name\":default}]");
            out.flush();
            out.close();       

PrintWriterとサーブレットOutputStreamの違いは以下の通りである:1.PrintWriterは文字単位ですべての情報を処理し、サーブレットOutputStreamはバイナリの資料のみを処理する.2.PrintWriterは文字テキストを出力する際に内部で文字列をある文字セットで符号化されたバイト配列に変換する必要があり、文字列からバイト配列への変換を自分で行う必要がないという利点がある.変換された文字セット符号化は、setContentTpyeまたはsetCharacterEncodingまたはsetLocaleを設定することによって実現される.サーブレットOutputStreamオブジェクトを使用して、1バイトの入力ストリームから直接読み出し、そのままカスタマーサービスに出力します.3.この2つのメソッドは互いに反発し合い、1つしか呼び出せません.使用する場合は、メソッドを変更する前にflush()を呼び出し、バッファデータを消去します.
3.ObjectMapper書き込み戻り値
    //     
    PrintWriter out = response.getWriter();
    Object result = new Object();
    // jackson    
    ObjectMapper objectMap = new ObjectMapper();
    objectMap.writeValue(out, result );

関連jarパッケージ
jackson-core-2.2.3.jar jackson-annotations-2.2.3.jar jackson-databind-2.2.3.jar