angular $ HTTP.SUCCESSメソッドにオブジェクトを返しないJavaサーブレット
-
21-12-2019 - |
質問
angular.jsを学びます。私は多くの既存の質問を検索しようとしましたが、一致する質問や答えを見つけることができませんでした。
私はJavaサーブレットにGETリクエストを送信し、それからオブジェクトを期待しています。これがAngular $ HTTP GETリクエスト
です。 $http({
method:'GET',
url : '/JSONWebApp/json/?fqn=' + $scope.fqn
}).
success(function(data, status, header, config){
console.log('Success');
console.log("data - "+data);
console.log("status - " + status);
console.log("header - " + header);
console.log("config - " + config);
}).
error(function(data, status, header, config){
console.log('Error');
});
.
Javaサーブレットでは、Dogetメソッド
で書くものです。protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Incoming Request URI : " + request.getRequestURI());
**User user = new User();
request.setAttribute("user", user);
RequestDispatcher view = request.getRequestDispatcher("/html/index.html");
view.forward(request, response);**
}
.
このサーブレットから応答が返されたら、角度側で$ HTTPサービスの成功につながります。どこからサーバーから送信されたユーザーオブジェクトを取得します。
データを印刷するためにconsole.logを追加すると、転送中の/html/index.htmlの内容が印刷されます。
私の研究に基づいて、私の怒りコードは正しいですが、私はJavaサーブレットで物事を正しく設定していません。(このヘルプは - Angular.jsアクションSuccess Callback )
事前にありがとうございました。
解決
あなたのユーザーオブジェクトをJSON文字列にシリアル化し、それをレスポンスボディに置く必要があります。ジャクソンのようなライブラリは、それを追加して自分自身を混乱させる前にそれをJSON文字列に連通していて、それを自分でシリアル化することができます。Content-Typeヘッダーを設定することを忘れないでください。
他のヒント
-
$ HTTPオブジェクトに次の行を追加します。 ヘッダ:{'content-type': 'application / x-www-form-urlencoded'}
-
GETの代わりにPOSTメソッドを使用する 方法: '投稿'
だから最後に、私たちはこのようなものを思い付きました:
myData = {"name": "zezinho", "pass": "123xxx"};
$http({
method: 'POST',
url: 'Login',
data: myData,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data) {
alert(data);
}).error(function () {
alert("login error");
});
.所属していません StackOverflow