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

时间:2015-02-27 09:31:21

标签: java jsp servlets nullpointerexception

我正在尝试使用会话对象将我的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);

请帮帮我。

2 个答案:

答案 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

在第二个servlet中检索DTO
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);
%>