gpt4 book ai didi

JSP 转发与重定向和浏览器 URL

转载 作者:行者123 更新时间:2023-12-02 19:35:29 25 4
gpt4 key购买 nike

我对 JSP/Servlet 设置以及浏览器 URL 中显示的内容有疑问。 page1.jsp 通过带有“SAVE.do”操作的表单提交到 servlet。 Servlet 希望在保存时将成功消息传递回 page1.jsp。我通过使用

将消息放入请求中来做到这一点
request.setAttribute("message", "Save Successful");

然后我打电话

request.getRequestDispatcher("page1.jsp").forward(req,resp);

但是,浏览器会显示http://localhost:8080/SAVE.do的URL而不是http://localhost:8080/page1.jsp

当我使用将转发更改为重定向时

response.sendRedirect("page1.jsp");

那么属性就丢失了。

我想我正在寻找正确的方法来执行此操作,以便在再次加载 page1.jsp 时可以取回该属性,并在浏览器中显示正确的 URL。

最佳答案

正确的 URL 是浏览器提交的 URL。请求首先由 servlet 处理,然后由 JSP 处理,这一事实与浏览器无关。顺便说一句,JSP 很可能位于 protected 文件夹中(如 /WEB-INF),因为浏览器从不直接向此 JSP 发送请求,而是通过调度程序 servlet 的 URL 发送请求。

重定向与转发完全不同。转发意味着:我使用另一个服务器组件来完成我的请求的处理。重定向的意思是:我已经处理完请求,我会要求浏览器去访问另一个URL,从而发出一个新的请求。这个新网址可以是完全外部的网址(例如 google.com)。

根据您的情况,您可能需要应用 post-redirect-get模式,以便刷新“成功”页面不会触发表单的重新提交。但是,如果您想显示动态选择的消息,则必须将其保存到 session 中并在第二个请求中检索它。不过,如果您想正确应用 MVC 模式,您的第二个请求也应该通过 servlet。

请注意,大多数 MVC 框架都支持 post-redirect-get 模式。

关于JSP 转发与重定向和浏览器 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7727445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com