我的所有 Js 和 css 都在 script.jsp 文件中,并包含在每个页面上
<jsp:include page="../include/scripts.jsp" />
当页面提交/刷新一次又一次重新加载?
如何控制这个?
我的所有 Js 和 css 都在 script.jsp 文件中,并包含在每个页面上
<jsp:include page="../include/scripts.jsp" />
当页面提交/刷新一次又一次重新加载?
如何控制这个?
这是我发现的可以解释它的解释。它在我需要时帮助了我
这是对问题的解释...
单击表单上的“提交”按钮会向 Web 服务器发送一个请求,其中包括在表单上输入的所有数据。不仅是 URL,表单数据也是请求的一部分,这个请求被浏览器记住。如果用户单击“刷新”,浏览器会重复请求,再次将相同的 URL 和表单数据发送到 Web 服务器。
但是表单可以通过两种不同的方式提交,GET 或 POST,这取决于“form”标签的“method”属性。有一个约定是 GET 请求没有副作用;它只获取数据,但不对数据库进行任何更改。另一方面,如果请求更改数据,则应始终使用 POST 请求。正如我所说,这些只是约定,它们之间并没有太大的技术差异,但一个非常重要的区别是,如果用户尝试重复 POST,浏览器会警告用户——点击“刷新”会弹出一个对话框警告用户这可能会导致重复操作,并确认他们确实想要重新提交。刷新 GET 请求时,浏览器不会显示此确认信息。
您的表单是否使用 GET 方法将其更改为 POST 是最简单的解决方案,因为这至少意味着用户在尝试刷新时会收到警告。
但更好的解决方案是@cletus 建议的 POST+REDIRECT+GET 成语。这将数据库更新 (POST) 和视图 (GET) 拆分为两个操作。在浏览器上单击刷新然后只是重复 GET,它没有副作用。
对您现在使用<%@ include/>
的标签使用 include 指令。<jsp:include/>
<jsp:include/>
每次编译器遇到该标记(首次请求,刷新)时,将指示 jsp 运行时去获取包含的资源,同时<@ include/>
意味着包含的资源在编译时内置到父资源中
不同之处在于该指令是编译时包含。这意味着指令的内容(在您的情况下是scripts.jsp)被烘焙到父 jsp 中(最终是 jsp 将被编译成的 servlet)。效果是包含的文件只在第一次渲染父 jsp 时被读取。
你应该拥有的:
<%@ include page="../include/scripts.jsp" />
有关的: