关于sendRedirect重定向 参数的传递方式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sendRedirect重定向 参数的传递方式?相关的知识,希望对你有一定的参考价值。

调用HttpServletResponse对象的sendRedirect方法重定向到一个URL,传参方式我知道两种:
一种是在URL后面直接跟 ?num=111,
另一种是把参数放到HttpSession里面进行传递。
我想问的是,有没有其他的传参方式?还有没有别的办法?我说过的两种方式大家就不要
重复说了,求高手解答!

参考技术A request.setAttribute("user", user);
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)”

servlet如何重定向

使用response.sendRedirect(url) 重定向的url指定中文get参数,接收页面获取的值为问号

RequestDispatcher.forward和HttpServletResponse.sendRedirect