我正在尝试使用会话对象将我的DTO对象从jsp传递给servlet,但我最初得到空指针异常我尝试使用请求对象,这会产生相同的错误,因此我转移到了会话对象。
第一个servlet中的request.getSession().setAttribute("datadto", dataDTO);
request.getRequestDispatcher("success.jsp").forward(request, response);
<%
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
我按照他的说法实现了我的空指针异常
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);
请帮帮我。
答案 0 :(得分:0)
您的DTO已在第一个servlet中的session
中设置。因此,只需从您的JSP中删除此代码,因为它实际上是通过将{0}设置为session
来从null
删除DTO。
<%
DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
HttpSession session420 = request.getSession();
session420.setAttribute("object", dataDTO);
%>
使用原始密钥名称datadto
HttpSession session=request.getSession(false);
DataDTO dataDTO = (DataDTO) session.getAttribute("datadto");
答案 1 :(得分:0)
在你所说的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);
%>