#java #servlet
Сайт написан на чистых сервлетах, никаких фреймворков не используется. При открытии любой страницы сервлет этой страницы отрабатывает 2 или более раз. В чем причина? Маппинг сервлетов в аннотациях. Например, для главной страницы: Index.java @WebServlet(name = "index", urlPatterns = {"/index.html"}) public class Index extends AbstractServlet { protected static char[] page; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doResponse(request, response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doResponse(request, response); } @Override protected void preparePage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuilder stringBuilder = new StringBuilder(); ... creating page from template ... setPage(stringBuilder.toString().toCharArray()); } } AbstractServlet.java public abstract class AbstractServlet extends HttpServlet { protected char[] getPage() throws ServletException, IOException { return (char[]) this.getClass().getField("page").get(this.getClass()); } protected void setPage(char[] page) { this.getClass().getField("page").set(this.getClass(), page); } protected void doResponse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); if (this.getPage() == null) { this.preparePage(request, response); } pw.write(this.getPage()); } protected abstract void preparePage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; } Скриншот заголовков первого запроса Скриншот заголовков второго запроса
Ответы
Ответ 1
Клиент указал в сообщении referrer: http://localhost/index.php, это означает что первый запрос инициировал второй (это аутентификация, либо переадресация, или иная ошибка). Теперь видно, что браузер создает второй запрос на /index.html. Но в ответе сервера нет заголовка Redirect /index.html и код ответа 200. Значит в теле ответа есть текст: Либо иные ссылки на /index.html. И судя по Accept идет запрос картинки. Если нет, приложите к вопросу "тело" первого сообщения сервера, разгадка в нем. А сервлет вполне нормально обрабатывает два разных запроса: GET(http://localhost/) GET(http://localhost/index.html)
Комментариев нет:
Отправить комментарий