泽西与AngularJs导致405错误

时间:2016-09-09 10:50:58

标签: java angularjs rest jersey jersey-1.0

我正试图通过Jersey在UI中显示简单的String消息。

Web.xml中

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>Sapmle</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

Controller.java

package org.it.bt;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/")
public class Controller {

    @GET
    @Path("/receive")
    @Produces(MediaType.APPLICATION_JSON)
    public String testApp() throws FileNotFoundException {
        String x = "My name";
        return x;
    }   
}

Controller.js

var app = angular.module("myApp", []); 
app.controller('myController',[ '$scope', '$http', function($scope, $http){

    $http.get('receive').success(function(res)                   
        {   
            $scope.name = res;                    
        }).error(function(error)
        {
            console.log(error);
        });
}]);

的index.html

<!DOCTYPE html>
<html>
    <head>
       <meta charset="ISO-8859-1">
       <title>Task</title>
       <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js">        </script>
       <script type="text/javascript" src="Controller.js"></script>
   </head>
    <body>
        <div ng-app="myApp" ng-controller="myController">
            <h1>{{ name }}</h1>
        </div>
    </body>
</html>

我已经包含以下罐子 -

asm-all-3.3.1
jersy-core-1.17.1
jersy-server-1.17.1
jersy-servlet-1.17.1
json-20090211

当我在tomcat中运行时,我没有得到任何异常并且不允许405方法错误。我尝试评论角度$http方法并运行,但我仍然得到相同的错误。 对此有何帮助?

1 个答案:

答案 0 :(得分:0)

error 405表示调用了错误的方法。

  

请求资源不支持请求方法 ; ;例如,表单上的GET请求,要求通过POST显示数据,或者在只读资源上显示PUT请求。

在你的情况下你的后端(java)暴露了一个GET,但是从角度来看你正在调用一个POST。

纠正并重新测试。