2016-11-23 61 views
0

我正在嘗試爲我的網站設置一個登錄頁面,但是此刻我卡在sendRedirect方法中,因爲它在需要時似乎不會加載新頁面。response.sendRedirect在Java和AngularJS之間不起作用

我的登錄頁面是一個.jsp文件即會透過AngularJS $scope到servlet的用戶名和密碼信息,其中包含以下代碼:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    System.out.println("Redirecting..."); 
    response.sendRedirect("https://www.youtube.com/"); 
    return; 
} 

System.out.println("Redirecting...");的作品,但它不重定向到提供的網址,不管它是什麼。我已閱讀其他建議,其中提到添加return;行,並且我嘗試過其他URL專用於我的項目(例如index.jsp,\index.jsp等),但這些都沒有改變,它仍然無法正常工作。

window.location會更合適嗎?我應該在這裏修改哪些代碼?

+1

定義_doesn't WORK_。你爲什麼期望你的頁面重定向,而不是通過AngularJS發送的請求?當您在瀏覽器的網絡控制檯中檢查響應的狀態代碼時,它是什麼? –

+0

我的意思是瀏覽器不會從登錄頁面重定向到我在'response.sendRedirect'方法中指定的內容(例如youtube.com,index.jsp等) – dat3450

+0

爲什麼要這樣? –

回答

0

因此,我已經使網頁最終重定向正確,我發佈這只是爲了防止別人在同一問題上絆倒。

正如在以前的評論中提到,響應應該從Java servlet來AngularJS發送,我已經做了重定向發生在我logincontroller.js文件如下:

var app = angular.module('myApp', []); 

function LoginController($scope, $http, $window) 
{ 
    $scope.login = function() 
    { 
     $http({ 
      url: 'login', 
      method: 'POST', 
      data: 
      { 
       'username': $scope.username, 
       'password': $scope.password 
      } 
      }).success(function(data, status, headers, config) { 
       alert("SUCCESS! Data: " + data); 
       $scope.details = data; 
       $window.location.href = "home.jsp"; //This line redirects. 
      }).error(function(data, status, headers, config) { 
       alert('ERROR!'); 
     }); 
    }; 
};