Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 会话参数为空_Java_Jsp_Servlets_Null - Fatal编程技术网

Java 会话参数为空

Java 会话参数为空,java,jsp,servlets,null,Java,Jsp,Servlets,Null,我试图将一个字符串从一个servlet传递到另一个servlet,但在第二个servlet中总是得到一个空值。我已经用头撞了这个几乎两个星期都没有用,我的想法也没有了。我已经阅读了这里发布的所有类似问题,但仍然得到一个空值 这是第一个servlet @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { try { HttpSessio

我试图将一个字符串从一个servlet传递到另一个servlet,但在第二个servlet中总是得到一个空值。我已经用头撞了这个几乎两个星期都没有用,我的想法也没有了。我已经阅读了这里发布的所有类似问题,但仍然得到一个空值

这是第一个servlet

@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的第二个servlet

@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);
    }
}
为了访问第二个servlet,我在这个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%>";
名称在另一个servlet中设置

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);

您正在使用请求范围属性获取字符串值,请使用以下代码获取会话值:

<% String lobbyId = (String)request.getSession().getAttribute(lobbyId); %>

您应该通过将Java放入servlet并将显示放入JSP MVC范例来真正区分Java和显示。我感到困惑的是,在您的servlet 1中,您调用platformpairsproub.JSP-您是说您在JSP中有一个doGet方法吗?我看不到您在会话中放入了任何内容。尝试session.setAttributelobbyId,lobbyId;PlatformPairsLobby.jsp是最后发布的jsp。我尝试了session.setAttributename,name;在第一个servlet中,仍然无法工作。您确定会话为空吗?显示的调用永远不允许返回null。而且,您几乎肯定是想导入java.util.List,而不是java.awt。如果可能的话,一定要升级到类似SpringMVC的版本。我需要从servlet1到servlet2获取名称。lobbyId参数未在第二个参数中使用。这是一段古老的代码。