servlet中sendRedirect重定向问题

Posted

tags:

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

在客户端发送到服务器端的请求数据在sendRedirect方法后,无法传递到下一个页面,有什么解决的办法啊
我想知道的是除了重定向、转发和Session、还有添加请求参数外的其他方法!知道的请说,每多说出一种方法,我就多加10分!!!!

好多解决方案:
一 比如你要sendRedirect("a.jsp"),可以带上参数,修改成这个样子sendRedirect("a.jsp?参数名=参数值")

二 放在session中,后一张页面session中取。

三request.getRequestDispatcher("a.jsp").forward(request, response);这样跳转
参考技术A 这个方法的参数是下一个页面的地址,对吧,地址后面用
?paramName=paramValue
的形式,把参数带过去,多个参数间用&

eg:
sendRedirect("name.jsp?userId=Joe&userAge=30");
这样name.jsp的request中就加入它们两个了:
String newUserId = request.getParameter("userId");
String newUserAge = request.getParameter("userAge");

就跟html上页面间传参数一样使用。

如果是用Struts的话,因为Action在重定向后是再new出来一个实例,所以原Action中的变量值不手动带过来的话,肯定是过不来的。你是不是这里的问题。
参考技术B 这个方法数据是重新加载另一个页面,也就是说它是第二次请求的.所以数据会丢.可用其所长forward(request,response)方法 参考技术C 这个方法的参数是下一个页面的地址,对吧,地址后面用
?paramName=paramValue
的形式,把参数带过去,多个参数间用&

如果是在servlet或者struts中的action中也可用于之间的传递
基本说白了:就差不多一个传参的功能
参考技术D 参数如法传递的话,可以在URL的后面加?a=b&&a=c
=前面是key,后面是value

无法使用 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,我尝试了这个解决方案,但没有在那里工作,请帮助

以上是关于servlet中sendRedirect重定向问题的主要内容,如果未能解决你的问题,请参考以下文章

servlet如何重定向

无法使用 response.sendRedirect 重定向

JavaWeb Response请求重定向的路径问题

response.sendRedirect 在 Servlet 过滤器中不起作用

Servlet

重定向和servlet生命周期