控制器不接受数据POST 404

Controller does not accept data POST 404

请帮帮我,我正在用 spring mvc 在 java ee 上写一个站点,我需要将请求发送到 servlet,但出现错误 404。

我的html:

<input type="button" value="add" onclick="sendRequest()">

我的 js:

function sendRequest(){
var str = "this is string";
    $.ajax({
            url:"ajaxtest",
            type:"POST",
            //data:JSON.stringify(myJson).toString(),
            data:str,
            success: alert("good")
        });}

我的控制器:

@RequestMapping(value="ajaxtest", method=RequestMethod.POST)
    public void getAjax(String myStr){
        System.out.print("result : "+myStr);
    }

结果控制台浏览器:

POST http://localhost/MyProject/ajaxtest 404 (Not Found)
m.ajaxTransport.send - jquery-1.11.2.min.js:4 
m.extend.ajax - jquery-1.11.2.min.js:4
sendRequest - add.jsp:139
onclick - add.jsp:213

结果控制台ide:

INFO: Server startup in 2991 ms
result : null

请帮帮我!

您需要做几件事才能使其正常工作。我的回答基于 post.

中的信息

您 ajax 数据必须是像下面这样的键值对才能发送一个简单的字符串。

function sendRequest(){
var str = "this is string";
    $.ajax({
            url:"ajaxtest",
            type:"POST",
            //data:JSON.stringify(myJson).toString(),
            data:{myStr:str},
            success: alert("good")
        });}

您必须告诉 spring 如何在控制器方法上解析 myStr ,否则 Spring 将无法知道如何解析它。在我们的例子中,我们将使用@RequestParam 注释,它告诉 spring 从请求参数中获取它。

@RequestMapping(value="ajaxtest", method=RequestMethod.POST)
    public void getAjax(@RequestParam String myStr){
        System.out.print("result : "+myStr);
    }

在您的控制器中,更改:

public void getAjax(String myStr) {

至:

public void getAjax(@RequestBody String myStr) {

@RequestBody 告诉 Spring 使用请求的内容作为控制器方法的参数。