У меня есть приложение на основе сервлета, которое создает сеанс и сохраняет некоторую информацию при первом обращении к нему. Эта информация используется на последующих страницах. Процесс столкнется с проблемой, если щелкнуть по исходному URL-адресу внутри документа msword. Сервлет создает сеанс и отправляет ответ обратно. Ответ отображается во вновь открытом браузере. Ссылка, нажимаемая изнутри браузера, создает новый сеанс. Любые последующие URL-адреса, нажатые из браузера, повторно используют второй сеанс
Есть ли способ заставить сервер распознать начальный сеанс по второму запросу?
Я создал образец сервлета, который извлекает сеанс и записывает идентификатор вместе с новой ссылкой для обратного вызова.
Ниже приведен тестовый сервлет
public class SessionServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StringBuffer sb = new StringBuffer();
sb.append("<HTML>\r\n<HEAD>\r\n<title>\r\nServlet Session Test\r\n</title>\r\n");
sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
sb.append("</HEAD>\r\n<BODY>\r\n");
HttpSession userSession = request.getSession(true);
if (userSession.isNew()) {
sb.append("User Session is new\r\n");
} else {
sb.append("User Session is old\r\n");
}
sb.append("<br>User Session ID = " + userSession.getId() + "<BR>");
sb.append("URL <a href=\"http://localhost:9080/myTestApp/SessionTest\"> Session Test </a>");
sb.append("</BODY> </HTML>\r\n");
response.setContentType("text/html; charset=UTF-8");
ServletOutputStream sos = response.getOutputStream();
sos.write(sb.toString().getBytes("UTF-8"));
}
}