GSONを使用してJSPファイルに情報を表示する方法

私はJSPに基づいてWebアプリケーションを開発しています。私はサーブレットクラスを持っています:

package managesystem;

import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

public class getUsernamesServlet extends HttpServlet{

/**
 * 
 */
private static final long serialVersionUID = 1L;

   public void doGet(HttpServletRequest req, HttpServletResponse resp){
      List usernamesList = StudentManager.findAllUsernames();
      req.setAttribute("usernames", new Gson().toJson(usernamesList));

   }

}

私の質問は次の通りです:ユーザ名がまだ利用可能かどうかをAjaxでチェックするにはどうすればいいですか?サーブレットがリクエストに書き込むJSON情報を取得するにはどうしたらいいですか?例えばAjaxを使ってregister.jspですか?

敬具、

h4

3

1 答え

要求属性として設定するのではなく、応答本体に書き込む必要があります。

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(new Gson().toJson(usernamesList));

このようにして、このサーブレットのAjaxリクエストはJSONレスポンスを取得します.JSONレスポンスはJavaScriptを使用して通常の方法でトラバースできます。

つまり、あなたの唯一の目的がユーザー名が利用可能かどうかを確認することだけであれば、少し違う方法でこれにアプローチすることもできます。ネットワーク上のすべてのユーザー名の全体リストをポンピングし、JavaScript側でチェックジョブを実行する代わりに、入力パラメータをリクエストパラメータとして入力してDBに送信させることもできますチェックジョブを実行して、 true または false を返します。例えば、

String username = request.getParameter("username");
boolean usernameAvailable = studentService.usernameAvailable(username);

Map data = new HashMap();
data.put("usernameAvailable", usernameAvailable);

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(new Gson().toJson(data));

〜と

$.get('someservlet', { 'username': username }, function(data) {
    if (!data.usernameAvailable) {
        $('#somemessage').text('Username is not available, please choose another').show();
    }
});

これは帯域幅効率が高く、機密情報漏洩のリスクが低くなります。

参照:

5
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript