Spring Web Flow 技术详解
一、同步访问与性能影响
在使用基于令牌(流执行键)的同步访问时,很多人会担心其对性能产生影响。实际上,这种同步发生在 HTTP 会话内的流执行中,它只是对单个客户端向同一流执行发出的操作进行序列化访问。例如,客户端的重复提交会被序列化处理,因为重复提交是在同一 HTTP 会话内并行向同一流执行发出多个请求。但如果两个不同的客户端(即不同的会话和不同的流执行)同时按下提交按钮,不会进行序列化,所有操作将并行执行。
二、Post Redirect Get (PRG) 模式
当用户意外刷新已提交的表单时,即使没有双击,也会产生与重复提交相同的效果。为解决这个“意外”重新提交的问题,Web Flow 提供了 Post Redirect Get (PRG) 模式。
PRG 模式对请求进行两阶段处理:
1. 第一阶段 :从浏览器接收 HTTP 请求,触发应用逻辑的调用(如果有)。然后,Web Flow 向浏览器发送重定向,在进入第二阶段之前暂停流执行,并将状态内部存储。
2. 第二阶段 :浏览器跟随重定向,向 Web 容器发出 HTTP GET 请求。Web Flow 再次处理该请求,渲染视图并将其发送回客户端浏览器显示。
以下是 PRG 模式的 mermaid 流程图:
graph LR
A[用户提交表单(POST 请求)] --> B[Web 容器执行逻辑]
B --> C[Web Flow 发送
超级会员免费看
订阅专栏 解锁全文
1894

被折叠的 条评论
为什么被折叠?



