Отображение сервлета для параметров вызова ajax - PullRequest
1 голос
/ 28 февраля 2011

У меня есть вызовы ajax с URL-адресом http://localhost:80/Push/GetContacts?id=23 и следующим отображением сервлета:

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

Сервлет не вызывается при вызовах ajax.Возвращает HTTP 404 не найденный ответ.Каков правильный шаблон URL для моих вызовов ajax?

Вот вызов ajax, который не работает из-за сервлета.

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

Сервлет:

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 Ответ

3 голосов
/ 28 февраля 2011

Шаблон URL должен быть просто /GetContacts без звезды. Параметры не являются частью отображения сервлета и игнорируются при поиске правильного сервлета. Если вы хотите поддерживать URL-адрес, такой как /GetContacts/23, вы можете использовать отображение сервлета для /GetContacts/* и получить идентификатор, используя request.getPathInfo.

Редактировать: , как только что заметил BalusC, URL в вашем вызове ajax неверен. Обратный вызов параметра должен быть разделен знаком вопроса, а не амперсандом: GetContacts?callback=...

Кроме того, {data: helloworld} недопустимо в соответствии с json spec , и данные, и helloworld должны быть заключены в кавычки. Но это также не зависит от проблемы 404.

...