Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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 response.sendRedirect不保留请求属性? @覆盖 受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp) 抛出ServletException、IOException{ 字符串branch=req.getParameter(“branch”); 系统输出打印LN(分支); MOPMappingDAO=新的MOPMappingDAO(); ArrayList mops=dao.getMOP(分支); System.out.println(“拖把数量”+MOPS.size()); 要求设置属性(“mops”,mops); 响应sendRedirect(“webpages/mopmapping.jsp”); }_Java_Jsp_Servlets - Fatal编程技术网

Java response.sendRedirect不保留请求属性? @覆盖 受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp) 抛出ServletException、IOException{ 字符串branch=req.getParameter(“branch”); 系统输出打印LN(分支); MOPMappingDAO=新的MOPMappingDAO(); ArrayList mops=dao.getMOP(分支); System.out.println(“拖把数量”+MOPS.size()); 要求设置属性(“mops”,mops); 响应sendRedirect(“webpages/mopmapping.jsp”); }

Java response.sendRedirect不保留请求属性? @覆盖 受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp) 抛出ServletException、IOException{ 字符串branch=req.getParameter(“branch”); 系统输出打印LN(分支); MOPMappingDAO=新的MOPMappingDAO(); ArrayList mops=dao.getMOP(分支); System.out.println(“拖把数量”+MOPS.size()); 要求设置属性(“mops”,mops); 响应sendRedirect(“webpages/mopmapping.jsp”); },java,jsp,servlets,Java,Jsp,Servlets,上面是我正在使用resp.sendRedirect()的控制器代码,因此请求属性不会保留在我的jsp代码中。这是我的jsp代码 @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String branch = req.getParameter("branch"); System.out.

上面是我正在使用resp.sendRedirect()的控制器代码,因此请求属性不会保留在我的jsp代码中。这是我的jsp代码

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

String branch =  req.getParameter("branch");
System.out.println(branch);
MOPMappingDAO dao = new MOPMappingDAO();
ArrayList<MOP> mops = dao.getMOP(branch);
System.out.println("No of MOPS " + mops.size());
req.setAttribute("mops",mops);
resp.sendRedirect("webpages/mopmapping.jsp");
}

我得到一个NullPointerException,因为
mops
为null。在这种情况下,我可以使用request.forward(),但url不包含
webpages/mopmapping.jsp
。在这种情况下,每次刷新操作
//searchResults
都由控制器完成


请提供解决方案

在请求调度器中设置URL后,您可以执行请求转发

检查这个


重定向实际上是向客户端发送指令,以HTTP获取重定向的资源。因此,这是一个全新的请求/响应周期,这就是您的属性丢失的原因

使用会话部分解决了问题。您应该格外小心地删除您在会话中放置的东西,否则它将作为垃圾保留(如果这些东西在某些情况下累积,而不是在这种情况下,它们可能会导致内存泄漏)

框架通过FlashScope解决了这一问题(谷歌提供了如下链接)


根据您的使用情况,您应该决定什么是最合适的,会话/闪存范围还是转发。

要不丢失您的属性,请使用:

<%
ArrayList<MOP> mops = (ArrayList<MOP>)request.getAttribute("mops");
System.out.print(mops);
System.out.println(mops.size());
for(MOP mop : mops){ //searchResults }
%>
而不是:

req.getRequestDispatcher("webpages/mopmapping.jsp").forward(request, response);

祝你好运

为什么不使用session.setAttribute()和session.getAttribute(),这没有帮助。在这次更改之后,我现在得到404错误。
resp.sendRedirect("webpages/mopmapping.jsp");