java - 会话参数为空
问题描述
我试图将一个字符串从一个 servlet 传递到另一个,但我总是在第二个 servlet 中得到一个空值。我已经用头撞了这个几乎 2 周无济于事,而且我已经没有想法了。我已经阅读了此处发布的所有类似问题,但我仍然得到一个空值。
这是第一个 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);
}
}
这是第二个名称字符串始终为空的 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); %>
推荐阅读
- oracle - Oracle 是否支持 SQL 语句中的 RETURNING?
- java - 是否可以使用属性文件名动态配置 log4j2.xml?
- python - Tweepy stream.filter 使用现金标签
- php - 在 FB 和 FB OG 上共享时发送信息,通过使用 $_GET 的 URL 不起作用
- angular - 角度 onclick 选择多个字段获取值并更改背景颜色
- c# - 统一、透明背景和多显示器
- ios - 从最小化状态iOS返回后调用计时器
- javascript - 处理 dropzone 表单中的复选框
- api - Binance API Orderbook 深度检索问题
- python - Pandas:如何在 GROUPBY 之后使用 MELT