作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只需要在点击提交按钮后重定向到一个页面,而不是直接在地址栏中输入 url。如果直接在地址栏中输入,则应该显示主页。
我正在使用 session.getAttribute 来执行上述过程。我在想是否有任何替代方案,因为我需要为每个发布方法执行此操作...
以下方法适用于第一页,我在其中创建了一个 session 属性,该属性将在下一页中使用。
@RequestMapping(value = "/payment", method = RequestMethod.POST)
public String submitForPayment(@ModelAttribute("deposit") Deposit deposit, ModelMap model, HttpServletRequest request) throws IOException
{
try {
HttpSession sessionForNextPage = request.getSession(true);
sessionForNextPage.setAttribute("vNumber",
deposit.getValidityNumber());
return "redirect:success";
} catch (NullPointerException exception) {
return "redirect:payment";
}
}
下面的方法是针对使用上面声明的 session 的下一页。
@RequestMapping(value = "/success", method = RequestMethod.GET)
public String showSuccess(ModelMap model, HttpServletRequest request)
{
try {
view = "success";
HttpSession session = request.getSession(false);
int vNumber = (int) session.getAttribute("vNumber");
System.out.println(vNumber);
if (vNumber != 0) {
request.getSession(false).removeAttribute("vNumber");
return view;
}
else
return "pay";
} catch (Exception e) {
return "redirect:pay";
}
}
有没有其他方法可以做到这一点,因为我必须对所有方法都这样做......
最佳答案
每当我必须进行帖子提交时,我总是使用一个中间页面来捕获 POST 数据并将数据存储在数据库中并将记录 key 存储在 session 中并将其重定向到我检查记录 ID 的显示页面如果它在那里,那么我从数据库中检索数据并显示它,如果不显示错误消息。
因此,即使有人直接访问您的显示页面(输入网址),它也会显示一条错误消息,并且在大多数情况下,人们不会看到中间页面网址,但即使他们看到了,您也可以为您的 html 使用随机标记形成并存储在 session 中并在中间页面上验证它。
希望对您有所帮助。
关于java - 如何仅在使用spring单击java中的提交按钮后才转到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155403/
我是一名优秀的程序员,十分优秀!