ajax调用参数的Servlet映射

时间:2011-02-27 23:05:02

标签: java ajax servlets jsonp

我有一个具有url http://localhost:80/Push/GetContacts?id=23和以下servlet映射的ajax调用:

<servlet-mapping>
      <servlet-name>Test</servlet-name>
      <url-pattern>/GetContacts*</url-pattern>
</servlet-mapping>

不会在ajax调用上调用servlet。它返回HTTP 404未找到的响应。我的ajax调用的正确URL模式是什么?

这是因为servlet而无效的ajax调用。

jQuery.getJSON('http://localhost:8080/Push/GetContacts&callback=?', function(data) {
     alert(data.data);
});

servlet:

public void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException{
        try{
            resp.setContentType("text/html");
            PrintWriter out = resp.getWriter();
            out.write("{data: helloworld}");
            out.close();

        }
        catch(Exception e){
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:3)

网址模式只需/GetContacts而不是明星。参数不是servlet映射的一部分,在查找正确的servlet时会被忽略。如果您想支持/GetContacts/23之类的网址,可以使用/GetContacts/*的servlet映射,并使用request.getPathInfo检索ID。

编辑,正如BalusC刚刚注意到的那样,你的ajax调用中的url是不正确的。参数回调应该用问号分隔,而不是&符号:GetContacts?callback=...

此外,{data: helloworld}根据json spec无效,数据和helloworld都应该用引号括起来。但这也与404问题无关。