2017-08-25 10 views
0

サーブレットdoGetメソッドを使用してページを開くjavascript関数があります。 IN Jsと同様 :セキュリティのためにdoGetからdoPostに変更する

var a = "xxx?key=value"; 
window.open(a); 

ここでXXXは、HTTPサーブレットを拡張し、そのサーブレットロジックをdoGetメソッドで記述されているAAAサーブレットにマッピングされます。

しかし、主な問題はgetメソッドであるため、パラメータリスト全体(Javaスクリプトを使用して送信するキーと値のペア)がURLに表示されることです。これをdoPostに変更して、URL内のデータを非表示にして、安全でURLにデータが表示されないようにするにはどうすればよいですか。

他のオプションも歓迎します。

ありがとうございます!

+0

それともJSのキー値を暗号化し、doGetメソッドとしてそれを維持するサーブレットクラスでそれらを解読するために良いアイデアでしょう?、通常のようにLUE – Soham

+0

あなたはGET対POSTリクエストのセマンティクスに関して混乱しているようです。あなたが何かを取得したい場合は、GETリクエストを使用します。POSTリクエストを使用する場合は、何か(別の言葉では、新しいリソースを作成する)を「POST」します。リクエストボディにクエリパラメータを送信しても、接続を暗号化するためにHTTPSを使用しないでください。 – Dummy

答えて

0

新しいタブまたはウィンドウを開くときに、URLを設定する必要があります(get paramsを使用)。 1つのオプションがあります(ajaxを使用してください):

  1. 新しいページまたはビューを作成します。
  2. 単純な<a target="_blank" href="url">で新しいページを開きます。
  3. サーブレットに対して非同期要求(ajax)を行うには、javascript関数を使用します。
  4. ビューに結果を設定します。

    @WebServlet("/SampleServlet") 
    public class SampleServlet extends HttpServlet { 
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
         String parameter1 = request.getParameter("param1"); 
         String parameter2 = request.getParameter("param2"); 
    
         //Process request, build response 
         //You can return your prefered data type (html, xml...)  
    
         String jsonResponse = new Gson().toJson(new MyResponseObject(parameter1, parameter2)); 
    
         response.setContentType("application/json"); 
         response.setCharacterEncoding("UTF-8"); 
         response.getWriter().write(jsonResponse); 
        } 
    } 
    

    そして "新しいビュー"(jQueryのlibに含む):このようなサーブレット持つ

<html> 
<head> 
    ... 
    <script> 
    $(document).ready(function(){ 
     $.ajax({ 
      url: '/SampleServlet',    
      type: "post",   
      data: { 
       param1: "param1Value", 
       param2: "param2Value", 
      }, 
      dataType: 'json', //or html, xml...  
      success: function(data) {    
       //populate page body with servlet response (json, html, etc)     
      } 
     }); 
    });  
    </script> 
</head> 
<body> 
    <!-- page content here --> 
</body> 
</html> 
+0

これは、ページがロードされるとすぐにAjaxリクエストを発生させます。 –

+1

@Jonathan Laliberteはいあなたは正しいですが、ソーハムの:) –

0

ある種のイベントでは、次のJavaScriptをラップする(クリック、関数など):

var param = { 
    key: "value" 
}; 

$.post("someservlet", $.param(param), function(response) { 
    // ...response is here if needed 
}); 

サーブレットでは、

String key = request.getParameter("key"); 

How to use Servlets and Ajax?

関連する問題