我使用以下内容将图像保存为blob,但我不确定如何通过最终重定向传送消息以显示给用户:
JSP文件:
<%
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String action = blobstoreService.createUploadUrl("/servletimg");
%>
<form method="POST" action="<%= action %>" enctype="multipart/form-data">
...
</form>
目标servlet:
public class ServletImg extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse resp)
{
saveImg(...);
req.setAttribute("msg", "worked ok!");
resp.sendRedirect("/");
}
}
我们重定向到的最终jsp页面:
if (request.getAttribute("msg") == null) {
Log.e("Hey we're missing the expected attribute!!!");
}
一切正常,我的图像被保存等,但是当重定向回主jsp页面时,我没有看到“msg”属性。有没有办法传递消息,或者我必须在重定向中将其作为参数附加,例如:
resp.sendRedirect("/?msg=it worked ok!");
由于
答案 0 :(得分:1)
重定向基本上指示客户端向服务器发送新 HTTP请求。初始请求(和响应)将被包含,包括所有属性集。所以是的,你真的需要在重定向URL上传递一个参数。
response.sendRedirect("index.jsp?msg=" + URLEncoder.encode("worked ok!", "UTF-8"));
然后在JSP
中<p>Message: ${param.msg}</p>
或者,您也可以转发到相关资源,即
request.setAttribute("msg", "worked ok!");
request.getRequestDispatcher("/index.jsp").forward(request, response);
然后在JSP中(作为ugly and discouraged scriptlet与request.getAttribute("msg")
的简写):
<p>Message: ${msg}</p>
使用转发,初始请求仍将在目标资源中可用。