关于sendRedirect重定向 参数的传递方式?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sendRedirect重定向 参数的传递方式?相关的知识,希望对你有一定的参考价值。
调用HttpServletResponse对象的sendRedirect方法重定向到一个URL,传参方式我知道两种:
一种是在URL后面直接跟 ?num=111,
另一种是把参数放到HttpSession里面进行传递。
我想问的是,有没有其他的传参方式?还有没有别的办法?我说过的两种方式大家就不要
重复说了,求高手解答!
request.setAttribute("result", houses);
request.getRequestDispatcher("manage.jsp").forward(request, response);
用request这种方法也可以。追问
request.setAttribute("result", houses)这个方法只适用于转发,也就是你下面写的这个getRequestDispatcher,我现在用的是重定向,行不通,我之前试过,重定向之后的request是一个新的对象了,取不到之前设置的值。
参考技术B 你说用session传那么还可以用Application传追问
不懂你在说什么啊
追答9大内置对象 可以传值的 reqest session application
按你说的request不行 那么只有ession application了
而HttpSession 你又说过了 不是还剩application了吗
至于其他的传值 没有
肯定不行的,我连session都不用,怎么可能用application
追答你说 "另一种是把参数放到HttpSession里面进行传递"
那么还有一种就是把参数放到application里进行传递
没其他方法了 本来sendRedirect的用意就是转到一个新页面
带值跳转用的是request
无法使用 response.sendRedirect 重定向
【中文标题】无法使用 response.sendRedirect 重定向【英文标题】:Cannot redirect with the response.sendRedirect 【发布时间】:2010-10-31 23:02:20 【问题描述】:我用谷歌搜索了好几个小时关于如何在 jsp 或 servlet 中进行重定向。 但是,当我尝试应用它时,它不起作用。
我在jsp页面中的代码:
<%
String articleId = request.getParameter("article_id").toString();
if(!articleId.matches("^[0-9]+$"))
response.sendRedirect("index.jsp");
%>
我从调试中知道正则表达式有效,如果任何时候,articleId 不是数字,if
进入内部,但是当它到达 response.sendRedirect 时,它实际上并没有进行重定向。
在这种情况下,我是否遗漏了一些非常基本的东西?
提前致谢。
【问题讨论】:
【参考方案1】:你应该在重定向后return
:
response.sendRedirect("index.jsp");
return;
【讨论】:
这是值得考虑的“为什么”。 sendRedirect() 将标头添加到 HTTP 响应中,仅此而已。如果您随后继续向响应写入一些内容,则浏览器可能会认为重定向标头是多余的,并忽略它。在响应对象上调用方法的顺序总是值得考虑的,它通常会导致奇怪的故障模式而没有明显的原因。 Servlet API 非常明确地描述了这些潜在问题。 I also have the same problem,我尝试了这个解决方案,但没有在那里工作,请帮助【参考方案2】:这个 scriptlet 之前有内容吗?如果是这样,重定向将不起作用。
此外,通常的做法是将此类逻辑放在 servlet 或其他用作控制器的类中,而让 JSP 仅处理 HTML 的呈现。它也可以解决您的问题。例如,见here
【讨论】:
I also have the same problem,我尝试了这个解决方案,但没有在那里工作,请帮助以上是关于关于sendRedirect重定向 参数的传递方式?的主要内容,如果未能解决你的问题,请参考以下文章
jsp跳转getRequestDispatcher和sendRedirect的区别
无法使用 response.sendRedirect 重定向
JavaWeb—“页面跳转两种方式:请求转发(forward)与重定向(sendRedirect)”