Javascript 从ajax获取对spring的请求

Javascript 从ajax获取对spring的请求,javascript,ajax,spring,Javascript,Ajax,Spring,我正在学习ajax和javascript。这是使用spring和ajax添加的2个数字。我收到客户端发送的请求时出现语法错误。请帮帮我 控制器类 @Controller public class SumWithAjaxSpringController { @Resource(name="sumWithAjaxService") private SumWithAjaxService sumWithAjaxService; @RequestMapping(value = "ad

我正在学习ajax和javascript。这是使用spring和ajax添加的2个数字。我收到客户端发送的请求时出现语法错误。请帮帮我

控制器类

@Controller
public class SumWithAjaxSpringController {

    @Resource(name="sumWithAjaxService")
    private SumWithAjaxService sumWithAjaxService;

 @RequestMapping(value = "additionWithAjax", method = RequestMethod.GET)
     public String add(@RequestParam(value="value1", required=true) Integer value1,
                        @RequestParam(value="value2", required=true) Integer value2,) {

         Integer sum =  springService.add(value1, value2);

            return "additionWithAjax";
        }
}
@Service("sumWithAjaxService")
@Transactional
public class SumWithAjaxService {

    public Integer add(Integer number1, Integer number2) {

        return number1+ number2;
    }
}
服务等级

@Controller
public class SumWithAjaxSpringController {

    @Resource(name="sumWithAjaxService")
    private SumWithAjaxService sumWithAjaxService;

 @RequestMapping(value = "additionWithAjax", method = RequestMethod.GET)
     public String add(@RequestParam(value="value1", required=true) Integer value1,
                        @RequestParam(value="value2", required=true) Integer value2,) {

         Integer sum =  springService.add(value1, value2);

            return "additionWithAjax";
        }
}
@Service("sumWithAjaxService")
@Transactional
public class SumWithAjaxService {

    public Integer add(Integer number1, Integer number2) {

        return number1+ number2;
    }
}
JSP

    <script type="text/javascript">
    function add() 
    {
        var xmlhttp;
        var value1 = document.getElementById("text1").value;
        var value2 = document.getElementById("text2").value;
        var url = "additionWithAjax";
        var parameters = "text1=" + value1 + "&text2=" + value2;

        if (window.XMLHttpRequest)
          { 
          xmlhttp=new XMLHttpRequest();
          }
        else
          { 
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }

        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("result").innerHTML=xmlhttp.responseText;

            }

          };
            xmlhttp.open("GET",url+"?"+parameters,true);
            xmlhttp.send();
        }
        </script>        
    </head>
    <body>

Enter 1st number : <input type="text" name="n1" id="text1"> 
Enter 2nd number : <input type="text" name="n2" id="text2"> 
<input type="button" id="calculate" value="calculate"
                    onclick="add()" />
Result :<span id="result" > </span>

</body>

函数add()
{
var-xmlhttp;
var value1=document.getElementById(“text1”).value;
var value2=document.getElementById(“text2”).value;
var url=“additionWithAjax”;
var parameters=“text1=“+value1+”&text2=“+value2;
if(window.XMLHttpRequest)
{ 
xmlhttp=新的XMLHttpRequest();
}
其他的
{ 
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“结果”).innerHTML=xmlhttp.responseText;
}
};
open(“GET”,url+“?”+参数,true);
xmlhttp.send();
}
输入第一个数字:
输入第二个数字:
结果:
web.xml

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<welcome-file-list>
       <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  </web-app>

春天
org.springframework.web.servlet.DispatcherServlet
1.
春天
/
index.jsp

@缺少响应库

下面的方法需要重新编写

 @RequestMapping(value = "additionWithAjax", method = RequestMethod.GET)
     public String add(@RequestParam(value="value1", required=true) Integer value1,
                        @RequestParam(value="value2", required=true) Integer value2,) {

         Integer sum =  springService.add(value1, value2);

            return "additionWithAjax";
        }
进入


将控制器方法更改为以下,然后重试

@RequestMapping(value = "additionWithAjax/{value1}/{value2}", method = RequestMethod.GET)
public String add(@PathVariable("value1") Integer value1,
                  @PathVariable("value2") Integer value2) {
}
从ajax URL发送这些值。在控制器中获取服务实例时,您可以使用
@autowired
注释而不是
@Resource

@Autowired
@Qualifier("sumWithAjaxService")
private SumWithAjaxService sumWithAjaxService;

根据我在您的请求URL中找到的内容,您需要首先处理控制器的“/SumWithAjaxController”请求映射,如下所示

@Controller
@RequestMapping(value = "/SumWithAjaxController")
public class SumWithAjaxSpringController {
然后必须将剩余部分“/additionWithAjax”添加到方法中

@RequestMapping(value = "/additionWithAjax", method = RequestMethod.GET)
js代码中还有一个错误,就是添加了两个名为“text1”和“text2”的参数。它们将不会被分配给控制器方法的参数名为“value1”和“value2”。
参数名称必须匹配。

但我仍然会遇到相同的错误。有没有办法不用@ResponseBody就可以做到这一点。只需调试请求是否到达Spring MVC控制器。我怀疑@RequestMapping(value=“additionWithAjax”,method=RequestMethod.get)中提到的值可能是“/additionWithAjax”我认为在添加“additionWithAjax”部分之前必须有一些URL,但上面说的是错误。我也尝试了所有这些方法。最终的URL叫什么?尝试在控制器请求映射中添加“/”like“/additionWithAjax”。“SumWithAjaxController”映射到哪里?我得到请求的资源不可用。我在Vaibhav处更正了它,仍然相同。我现在已附加web.xml。请检查。