Почему объект запроса не показывает файлы cookie, добавленные к каждому сервлету в совокупности? - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь отслеживать файлы cookie, добавленные в каждый сервлет, кумулятивным способом, используя метод getCookies () объекта запроса, но, к моему удивлению, при самом первом сервлете объект запроса знает обо всех файлах cookie, которые присутствуют в остальныхиз сервлетов.Разве это не должно быть показано в совокупности?Как объект запроса может получить остальные файлы cookie в других сервлетах, когда он находится только на первом сервлете?

Я пытался проверить его на различных серверах, таких как Weblogic и Tomcat, но все показываюттот же результат.Я получаю тот же вывод, хотя я пытаюсь использовать любой из методов include () или forward () для диспетчера запросов.

код для сервлета1

    @WebServlet("/serv1")
    public class Servlet1 extends HttpServlet {

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    Cookie c1 = new Cookie("ck1", "Servlet 1 cookie 1");
    Cookie c2 = new Cookie("ck2", "Servlet 1 cookie 2");
    response.addCookie(c1);
    response.addCookie(c2);
    System.out.println("--------Cookies at Servlet 1 are------------");
    Cookie[] cookies = request.getCookies();
    for(Cookie i: cookies) {
        System.out.println(i.getName() + " " + i.getValue());
        out.println(i.getName() + " " + i.getValue());
    }

    RequestDispatcher requestDispatcher = request.getRequestDispatcher("./serv2");
    requestDispatcher.include(request, response);
}

}

код для сервлета2

@WebServlet("/serv2")
public class Servlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    Cookie c3 = new Cookie("ck3", "Servlet 2 cookie 3");
    Cookie c4 = new Cookie("ck4", "Servlet 2 cookie 4");
    response.addCookie(c3);
    response.addCookie(c4);
    System.out.println("--------Cookies at Servlet 2 are------------");
    Cookie[] cookies = request.getCookies();

    for(Cookie i: cookies) {
        System.out.println(i.getName() + " " + i.getValue());
        out.println(i.getName() + " " + i.getValue());
    }

    RequestDispatcher requestDispatcher = request.getRequestDispatcher("./serv3");
    requestDispatcher.include(request, response);
}

}

код для сервлета3

@WebServlet("/serv3")
public class Servlet3 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Cookie c5 = new Cookie("ck5", "Servlet 3 cookie 5");
    Cookie c6 = new Cookie("ck6", "Servlet 3 cookie 6");
    response.addCookie(c5);
    response.addCookie(c6);
    System.out.println("--------Cookies at Servlet 3 are------------");
    Cookie[] cookies = request.getCookies();
    for(Cookie i: cookies) {
        System.out.println(i.getName() + " " + i.getValue());
    }
}

}

удаление файлов cookie

System.out.println("Deleting the cookies...");

    for(Cookie i: cookies) {
        i.setValue("");
        i.setMaxAge(0);
    }

ожидаемый результат в консоли должен быть следующим:

--------Cookies at Servlet 1 are------------
ck1 Servlet 1 cookie 1
ck2 Servlet 1 cookie 2
--------Cookies at Servlet 2 are------------
ck1 Servlet 1 cookie 1
ck2 Servlet 1 cookie 2
ck3 Servlet 2 cookie 3
ck4 Servlet 2 cookie 4
--------Cookies at Servlet 3 are------------
ck1 Servlet 1 cookie 1
ck2 Servlet 1 cookie 2
ck3 Servlet 2 cookie 3
ck4 Servlet 2 cookie 4
ck5 Servlet 3 cookie 5
ck6 Servlet 3 cookie 6
Deleting the cookies...

Фактические результаты в консоли следующие

--------Cookies at Servlet 1 are------------
ck1 Servlet 1 cookie 1
ck2 Servlet 1 cookie 2
ck3 Servlet 2 cookie 3
ck4 Servlet 2 cookie 4
ck5 Servlet 3 cookie 5
ck6 Servlet 3 cookie 6
--------Cookies at Servlet 2 are------------
ck1 Servlet 1 cookie 1
ck2 Servlet 1 cookie 2
ck3 Servlet 2 cookie 3
ck4 Servlet 2 cookie 4
ck5 Servlet 3 cookie 5
ck6 Servlet 3 cookie 6
--------Cookies at Servlet 3 are------------
ck1 Servlet 1 cookie 1
ck2 Servlet 1 cookie 2
ck3 Servlet 2 cookie 3
ck4 Servlet 2 cookie 4
ck5 Servlet 3 cookie 5
ck6 Servlet 3 cookie 6
Deleting the cookies...

Я предоставил эту информацию, насколько мне известно.Расскажите, если что-то нужно отредактировать или отформатировать.Пожалуйста, укажите причины, основанные на потоках управления и более практически выполнимых результатах с меньшим сродством к теории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...