0

我正在使用 JSP、Java、JSTL 和 Servlet 来实现一个基本的商店管理器 Web 应用程序。

我试图在 MVC(模型-视图-控制器)模式之上实现 PRG(POST-Redirect-GET)模式。

我不确定 PRG 是否会为我想要的工作。

我希望用户能够登录,访问几个仅登录页面,注销,然后当他刷新,返回(或前进)时,他只被带到登录页面。

当登录用户转到仅登录页面时,就会出现问题。response.sendRedirect(urlInStringForm)杀死所有请求参数。当然,您可以将内容存储在 HTTP 会话中,但是如果您有一个 PageController servlet,那么该 servlet 肯定会寻找所述会话数据……如果用户单击后退或前进(假设前进),则最终会在同一页面上转到重定向到 PageController 的其他资源)。如果可能,我想保留 1-PageController 方法。

似乎是双输的局面。任何解决方法?

4

1 回答 1

2

感谢评论者 BalusC,我想我已经弄清楚了。这是一个超级基本的方法:

  • 为视图使用 JSP。
  • 使用 Java Servlet 作为控制器(是的,多个控制器)并且始终使用response.sendRedirect(<url string>);后跟return;.
    • 当用户需要提交一些东西进行处理时,使用 POST。永远不要发布到另一个视图。始终发布到 servlet(控制器)。
    • 如果用户只需要跳转到另一个视图而不进行处理,请使用 GET。
  • 使用HttpSessioncookie 来存储临时通信数据。您甚至可以将 Java 对象放在HttpSession 属性中。
  • 对模型使用Java Beans;使用 JSTL 在 JSP 中访问它们的优点。
  • 使用一个专用 Java 类或专用 Java 类模块(可能是 bean)与您可能合并的任何数据库进行交互。
  • 使用下面 BalusC 提供的链接,了解您需要采取哪些措施来防止某些浏览器中的缓存。这样,您就可以消除那些在退出后单击浏览器的后退按钮可能会显示仅登录信息的讨厌实例。
  • 根据需要使用 HTTPS。

“Head First Servlets and JSP”对于新手来说是一本不错的读物。“Murach 的 Java Servlets 和 JSP,第 2 版”似乎也不错。

于 2011-04-28T17:28:12.180 回答