TL; DR: Помещение @WebServlet («/ Find-Customers») в начале сервлета (развернутого через Tomcat 7) не отображает сервлет на хост: порт/webproject/Find-Customers, даже если сервлет находится в папке src.Как сопоставить AJAX с сервлетами без web.xml
Я пытаюсь вызвать сервлет с помощью @WebServlet («/ ...»), который я сделал в прошлом, но как-то на этот раз что-то не так. Я никогда не использовал web.xml, и все работает отлично. Я использовал метод Ajax POST в ajaxFxns.js и подается в «FIND-клиентов» в качестве адреса и следующие в Java:
package coreservlets;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
@WebServlet("/Find-Customers")
public class ShowCustomers extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
// more code here
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Firebug говорит 404 не найден, когда дело доходит до «/ Find-клиентов», с тем насколько я знаю, это означает, что функция @WebServlet не соответствующим образом отображает сервлет на localhost: 8080/webproject/Find-Customers. Вот структура каталога (с неуместными вещи вынимают):
Webproject
--src
--coreservlets
--ShowCustomers.java
--WebContent
--scripts
--ajaxFxns.js
--index.html
Должен ли я сделать что-то особенное, когда я создал свою папку coreservlets, или как я могу идти об отладке это в среде разработчиков (я использую Затмение)? Реализация Web.xml на самом деле не прошла гладко, поэтому я спрашиваю, как обойтись без нее. Помощь будет оценена!
Вы видите путь контекста в URL-адресе? При отладке в Firefox? – JChap
Вы имеете в виду, когда он говорит «POST http: // localhost: 8080/webproject/Find-Customers» в консоли? Это не очень помогает мне, потому что мои другие проекты (которые работают) дают один и тот же шаблон. – user1764359
Какой сервер make/версия используется для этого webapp? '@ WebServlet' работает только в контейнерах с поддержкой Servlet 3.0 и новее. Вся история ajax кажется ненужной, так как вы уже получаете ту же самую ошибку HTTP 404, когда просто вводите URL сервлета прямо в адресную строку браузера, не так ли? Затем вы можете просто уменьшить этот шум JS/ajax от вопроса, чтобы сделать его более целенаправленным (поскольку вы исключили JS из вероятной причины). – BalusC