Google app engine blobstore上传后是否通过重定向传递成功消息?

Google app engine blobstore上传后是否通过重定向传递成功消息?,google-app-engine,jsp,servlets,Google App Engine,Jsp,Servlets,我使用以下命令将图像保存为blob,但我不确定如何通过最终重定向将消息显示给用户: JSP文件: <% BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); String action = blobstoreService.createUploadUrl("/servletimg"); %> <form method="POST" action="<%= ac

我使用以下命令将图像保存为blob,但我不确定如何通过最终重定向将消息显示给用户:

JSP文件:

<%
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String action = blobstoreService.createUploadUrl("/servletimg");
%>

<form method="POST" action="<%= action %>" enctype="multipart/form-data">
   ...
</form>
我们重定向回的最后一个jsp页面:

if (request.getAttribute("msg") == null) {
    Log.e("Hey we're missing the expected attribute!!!");
}
一切正常,我的图像被保存等,但当重定向回jsp主页面时,我看不到“msg”属性。是否有一种方法可以传递消息,或者我必须将其作为参数附加到重定向中,例如:

resp.sendRedirect("/?msg=it worked ok!");

感谢

重定向基本上指示客户端向服务器发出新的HTTP请求。初始请求(和响应)将被丢弃,包括所有属性集。是的,您确实需要沿着重定向URL传递一个参数

response.sendRedirect("index.jsp?msg=" + URLEncoder.encode("worked ok!", "UTF-8"));
然后是JSP

<p>Message: ${param.msg}</p>
然后在JSP中(作为with
request.getAttribute(“msg”)
)的缩写):

消息:${msg}


使用转发,初始请求仍将在目标资源中可用

A重定向基本上指示客户端向服务器发出新的HTTP请求。初始请求(和响应)将被丢弃,包括所有属性集。是的,您确实需要沿着重定向URL传递一个参数

response.sendRedirect("index.jsp?msg=" + URLEncoder.encode("worked ok!", "UTF-8"));
然后是JSP

<p>Message: ${param.msg}</p>
然后在JSP中(作为with
request.getAttribute(“msg”)
)的缩写):

消息:${msg}


使用转发,初始请求仍将在目标资源中可用

啊,好的,是的,如果我使用forward()方法,那么appengine会对此抱怨:[HTTP错误500-访问/index.jsp时出现问题。原因:预期会重定向,但尝试写入内容。]我猜这是blobstore服务特有的要求。我可以使用url中的参数来代替。谢谢。URL只是一个例子。您需要使用实际页面的webcontent相对路径,该路径显示为您正在请求webbrowser提供的
/
。我不知道它是什么页面,所以我只是用了一个例子。例如,它可以是
/WEB-INF/index.jsp
/home.jsp
或任何东西。它至少应该是显示消息的页面:)哦,不,我的意思是如果我使用forward()方法,使用一个工作url,应用引擎就会抛出HTTP 500异常。我确信url是有效的。所以我想我不能使用forward(),但必须使用redirect()。嗯,那一定是另一个GAE限制。对不起,我不知道,我不使用GAE。继续重定向,然后添加一个参数。URL编码是必要的,因为例如,空格是URL中的无效字符。作为另一种选择,您也可以将消息存储在会话中(
session.setAttribute(“msg”,“it works!”)
)并以相同的方式访问它(
${msg}
),但当最终用户在同一会话中打开多个窗口时,这会产生影响。啊,好的,是的,如果我使用forward()方法,那么app engine会抱怨:[HTTP错误500-访问/index.jsp时出现问题。原因:应为重定向,但尝试改为写入内容。]我想这是blobstore服务特有的要求。我可以使用url中的参数来代替。谢谢。url只是一个示例。您需要使用实际页面的webcontent相对路径,该页面显示为您正在请求webbrowser提供的
/
。我不知道它是什么页面,所以我只使用了examp例如,它可以是
/WEB-INF/index.jsp
/home.jsp
或任何东西。它至少应该是显示消息的页面:)哦,不,我的意思是,如果我使用forward()方法,有一个工作url,应用引擎就会抛出HTTP 500异常。我确信url是有效的。所以我认为我不能使用forward(),但必须使用redirect().Hmm,那一定是另一个GAE限制。很抱歉,我不知道,我不使用GAE。继续重定向,然后使用参数。URL编码是必要的,因为例如,URL中的空格是无效字符。作为另一种选择,您也可以将消息存储在会话(
session.setAttribute(“msg”),“它工作!”)
)并以相同的方式访问它(
${msg}
),但当终端用户在同一会话中打开多个窗口时,这会产生影响。
<p>Message: ${msg}</p>