将对象从 jsp 传递到 Servlet 时出现 NullPointerException

NullPointerException when passing object from jsp to Servlet

我正在尝试使用会话对象将我的 DTO 对象从 jsp 传递到 servlet,但我最初遇到空指针异常我尝试使用请求对象,它给出了同样的错误因此我移动到会话对象.

在第一个 servlet 中

request.getSession().setAttribute("datadto", dataDTO);
request.getRequestDispatcher("success.jsp").forward(request, response);

在jsp

<% 
        DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
        HttpSession session420 = request.getSession();
        session420.setAttribute("object", dataDTO);
%>

在第二个 servlet 中

HttpSession session=request.getSession(false);
DataDTO dataDTO = (DataDTO) session.getAttribute("object");

MyService myService = ServiceFactory.getMyService();
myService.generateExcel(dataDTO); <--nullpointerexception

在谷歌搜索中我发现了以下内容 link 我按照他说的那样实现了我仍然得到空指针异常

在jsp

DataDTO dataDTO = myService.getData(keyword, nor);
String myObjectId = UUID.randomUUID().toString();
request.getSession().setAttribute(myObjectId, dataDTO);
request.setAttribute("myObjectId", myObjectId);

在第二个 servlet 中

String myObjectId = request.getParameter("myObjectId");
Object myObject = request.getSession().getAttribute(myObjectId);
DataDTO dataDTO = (DataDTO) myObject;
request.getSession().removeAttribute(myObjectId);

请帮助我。

您的 DTO 已在您的第一个 servlet 中的 session 中设置。因此,只需从您的 JSP 中 删除 这段代码,因为它实际上是通过将 DTO 设置为 null.

session 中删除
<% 
    DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
    HttpSession session420 = request.getSession();
    session420.setAttribute("object", dataDTO);
%>

并使用原始 key 名称 datadto

在第二个 servlet 中检索 DTO
HttpSession session=request.getSession(false);
DataDTO dataDTO = (DataDTO) session.getAttribute("datadto");

JSP 你说的是 .

 DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");

应该是request.getSession().getAttribute("datadto");

你的代码修改在下面一行

<% 
        DataDTO dataDTO = (DataDTO) request.getSession().getAttribute("datadto");
        HttpSession session420 = request.getSession();
        session420.setAttribute("object", dataDTO);
%>