- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了两组 servlet: View 和 Controller /处理程序
requestDispatcher.forward()
并且用户通过确认重新发送刷新(在 Controller 将控制传递给 View /jsp 之后)页面,则有可能执行重复操作
response.sendRedirect()
我似乎无法发送任何通知而不在 session 中设置这些
public XServlet extends HttpServlet{
public void processRequest(request, response) throws ...{
//Do some stuff here
if(success){
setUserMessage("Hooray ur profile pic is uploaded!");
} else {
setUserMessage("Oh no! We couldn't upload that file its too biG!");
}
//Send the notification
request.setAttribute("status", getUserMessage());
request.getRequestDispatcher("editProfile.jsp").forward(request, response);
}
}
sendRedirect()
,那么我无法在不求助于 session 属性或将其附加到 url 的情况下显示状态消息。
最佳答案
您正在寻找“flash scope”。
The flash scope is backed by a short living cookie which is associated with a data entry in the session scope. Before the redirect, a cookie will be set on the HTTP response with a value which is uniquely associated with the data entry in the session scope. After the redirect, the presence of the flash scope cookie will be checked and the data entry associated with the cookie will be removed from the session scope and be put in the request scope of the redirected request. Finally the cookie will be removed from the HTTP response. This way the redirected request has access to request scoped data which was been prepared in the initial request.
String message = "Some message";
// ...
Map<String, Object> flashScope = new HashMap<>();
flashScope.put("message", message);
String flashScopeId = UUID.randomUUID().toString();
request.getSession().setAttribute(flashScopeId, flashScope);
Cookie cookie = new Cookie("flash", flashScopeId);
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
// ...
response.sendRedirect(request.getContextPath() + "/someservlet");
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
if ("flash".equals(cookie.getName())) {
Map<String, Object> flashScope = (Map<String, Object>) request.getSession().getAttribute(cookie.getValue());
if (flashScope != null) {
request.getSession().removeAttribute(cookie.getValue());
for (Entry<String, Object> entry : flashScope.entrySet()) {
request.setAttribute(entry.getKey(), entry.getValue());
}
}
cookie.setValue(null);
cookie.setMaxAge(0);
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
}
}
}
setFlashAttribute()
和带有响应包装器的 servlet 过滤器)进一步抽象化。
关于jsp - 将通知消息设置为应在 sendRedirect 后显示的请求属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32410695/
我正在使用 MEAN 堆栈创建一个应用程序,该堆栈有大量表单数据条目,这些数据条目会从经过身份验证的用户和匿名用户保存到数据库中。 我应该在堆栈的哪个位置创建所有验证规则?它们应该在 AngularJ
当此时在 IOS 设备上收到通知时,应更改角标(Badge)并应在打开应用程序之前设置角标(Badge)。 我检查了这个 onNotificationOpen() 方法。但是,当我点击通知时,它会调用
我的主页-菜单-点“软件”如果你点击它应该保持打开状态! 查看我的 Test-Homepage ! 我已经测试过将“li:focus”和“li:active”添加到我的最低 CSS 标签,但没有任何效
加载页面时,应在 jquery mobile 的弹出窗口中打开一条消息。是否可以。我有以下代码,其中使用按钮,单击弹出窗口将打开,但我在加载页面后直接需要它而不单击任何内容。请有人帮助我,谢谢。
在 Azure AD B2C 预览版中,您可以定义应用程序。然后,每个应用程序都会被赋予一个名称、客户端 ID、应用程序 key 和一些设置,以定义是否包含 Web 应用程序/Web api 以及是否
我有一个巨大的 gl.pxd 文件,其中包含 gl.h、glu.h 和 glut 的所有定义。 h.例如它有这些行: cdef extern from '': ctypedef unsigne
最新版本的 Azure Functions 工具(版本 1.0.9)在启动时生成以下警告: ServicePointManager.DefaultConnectionLimit is set to t
我有一个 xml 文件(applicationCtx-security.xml),其中定义了所有 Spring Security 过滤器和自定义过滤器及其 bean。我需要实现一个自定义过滤器,该过滤
我和我的团队正在编写 REST API,但某些概念仍未完全理解。 在给定资源中:objective/{id}/goal目标是收集 如果消费者试图达到一个不存在的目标,API 将返回状态代码 404 ,
我刚开始学习 Angular。如果我使用 Firebase 进行用户授权,那么使用 Promise 会更好吗?或 Observable ? 如果我尝试通过 Facebook 登录时出现错误,我将如何更
应Content-Type REST API Web 请求中的 header 使用逗号进行格式化,如 RFC 1867 : Content-type: multipart/form-data, bou
我是 Unity 新手。 我有 Rigidbody2D,我想为我的播放器添加常量 velocity。我想知道在 Start 或 Update (或 FixedUpate ) 当我在开始时应用速度时一切
在我的网站上,我想使用 PayPal 发送的 IPN 来处理订单。 在实际发生之前,我想使用 PayPal 开发者网站 (https://developer.paypal.com/developer/
将 Excel 加载项提交到 Office 商店时。 list 文件中应引用哪个版本的 Excel API? 我们经历过因为没有引用最新版本的 Excel API 而被拒绝的经历。但是如果我们的 Ex
很早就提出了一个问题,但没有很好地布局我的代码,整个问题有点困惑,然后当我更改了代码但仍然遇到相同的问题时,问题仍然存在,但是我决定重新-用我的代码提出问题,代码布局更加整洁,这样您就可以看到重要的部
我正在使用它作为网络界面来控制我的c程序,现在我添加了闹钟时间,其中MySQL将获取闹钟时间,我将在我的c中使用它作为输入,而另一个我需要开关闹钟,所以需要下拉框,其中可以选择开关,但它应该在MySQ
csslint 警告回退背景(十六进制或 RGB)应该在 RGBA 背景之前。"evidence="background: rgba(0, 0, 0, 0.8);/* FF3+,Saf3+,Opera
我是一名优秀的程序员,十分优秀!