Параметр сеанса всегда нулевой - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь передать строку из одного сервлета в другой, но я всегда получаю нулевое значение во втором сервлете.Я бился головой об этом почти 2 недели безрезультатно, и у меня кончились идеи.Я прочитал все похожие вопросы, опубликованные здесь, и все еще получаю нулевое значение.

Это первый сервлет

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
{
    try 
    {
        HttpSession session = request.getSession();
        String name = (String) session.getAttribute("name");
        int userId = DBConnect.getIdByName(name);
        int lobbyId = DBConnect.insertInLobby(userId);
        request.setAttribute("lobbyId", lobbyId);
        request.getRequestDispatcher("PlatformPairsLobby.jsp").forward(request, response);
    } 
    catch (ServletException | IOException e) 
    {
        logger.error("Error " + e);
    }
}

Это второй сервлет со строкой имени, которая всегдаимеет значение null.

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
{
    HttpSession session = request.getSession();
    String name = (String) session.getAttribute("name");
    int id = DBConnect.getIdByName(name);
    request.setAttribute("id", id);
    String lobbyId = request.getParameter("lobbyId");
    request.setAttribute("lobbyId", lobbyId);
    response.setContentType("application/x-java-jnlp-file");
    try 
    {
        request.getRequestDispatcher("PairsJnlp.jsp").include(request, response);
    } 
    catch (ServletException | IOException e)
    {
        logger.error("Error " + e);
    }
}

Для доступа ко второму сервлету я использую кнопку в этом JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="java.awt.List"%>
<%@page import="java.util.*"%>
<%@page import="database.DBConnect"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<%  
ArrayList<String> list = (ArrayList<String>) 
request.getAttribute("lobbyList");
Integer lobbyId = (Integer) request.getAttribute("lobbyId");
%>

------------------

window.location.href = 
"http://192.168.100.154:8080/GamePlatformCore/SecondServlet?lobbyId=<%=lobbyId%>";

Имя задано в другом сервлете.

request.setAttribute("verificare", verificare);
HttpSession session = request.getSession();
session.setAttribute("name", name);

if(request.getServletContext().getAttribute("userMessages")==null)
{
    request.getServletContext().setAttribute("userMessages",new ArrayList<String>());       
}

request.getRequestDispatcher(WELCOME_PAGE).forward(request, response);

1 Ответ

0 голосов
/ 15 октября 2018

Вы используете атрибут области запроса для получения значения String, используйте следующий код для получения значения Session:

<% String lobbyId = (String)request.getSession().getAttribute(lobbyId); %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...