我想獲得一個簡單的angularjs登錄屏幕工作。 角度應用程序通過http get方法將登錄詳細信息發送到java servlet,並預期成功/失敗的json響應。 Java servlet在Tomcat 8.0上運行。
不幸的是,角應用似乎不能夠從servlet接收數據(它發送該數據到servlet) - 「則」被稱爲每次的errorCallback方法。
此外,直接從瀏覽器訪問servlet的url可以正常工作(瀏覽器顯示響應字符串)。
你能幫我找到問題嗎?
這是在HTML頁面的div元素:
<div ng-controller = "loginCtrl">
<input type="text" ng-model = "userName" placeholder="Username"></input><br>
<input type = "text" ng-model = "userPass" placeholder="Password"></input><br>
<button type = "button" ng-click = "login()">Login</button><br>
{{message}}
</div>
這是js代碼:
var expenseApp = angular.module("expenseApp",[]);
expenseApp.controller('loginCtrl',['$scope','$http',function($scope,$http) {
$scope.userName = "";
$scope.userPass = "";
$scope.message = "type in your credentials";
$scope.login = function() {
var address = "http://localhost:8080/ExpenseSystemServer/LoginServlet?userName=" + $scope.userName + "&userPass=" + $scope.userPass;
$http({method:'get',
url:address})
.then(function(data, status, headers, config) {
$scope.message = "http success";
},
function(data, status, headers, config) {
$scope.message = "http error";
});
};
}]);
而且這是在Java servlet的doGet方法(servlet的類名是LoginServlet ):
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
String userName = request.getParameter("userName");
String userPass = request.getParameter("userPass");
System.out.print("Login attempt with " + userName + "; " + userPass + ": ");
if (userName == null || userPass == null || !userName.equals("admin") || !userPass.equals("pass")){
response.getWriter().write("{'success':false,'message':'wrong details'}");
System.out.println("failed.");
}
else {
response.getWriter().write("{'success':true, 'user':{'name':'admin'},'message':'Hi admin!'}");
System.out.println("succeeded.");
}
}
你能幫我嗎?
謝謝。