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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用response.sendRedirect(url) 重定向的url指定中文get参数,接收页面获取的值为问号相关的知识,希望对你有一定的参考价值。

比如一个页面使用:response.sendRedirect("url?parameter=中文")
重定向的页面内使用:request.getParameter("parameter"); 结果为 ??????? 很多问号
重定向到的页面获取到的数据为 ???
这是为什么

参考技术A 这是个乱码问题,不知道你的数据有没有涉及到数据库,就你目前的来看,request.getParameter("parameter"),这个会产生乱码是因为它获取的前台界面的值,你需要修改它的编码格式,改成统一的utf-8追问

我全部设置了utf-8的。respnse request都设置了utf-8。前台界面的html也是使用的utf-8~~
乱码会是问号么。我以前都是乱七八糟的看不懂的。

追答

乱码就是?号啊,还有各种看不懂的符号也是乱码。你再检查检查,看myeclipse得编码是不是设置正确的,数据库的编码也要设置正确。如果是mysql链接的数据库,乱码可容易出现了。

本回答被提问者和网友采纳

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

以上是关于使用response.sendRedirect(url) 重定向的url指定中文get参数,接收页面获取的值为问号的主要内容,如果未能解决你的问题,请参考以下文章

response.sendRedirect() 有啥用?

response.sendredirect为啥跳转不了

我遇到的response.sendRedirect跳转不了问题

无法使用 response.sendRedirect 重定向

404 与 response.sendRedirect

response.sendRedirect() 和 request.getRequestDispatcher().forward(request,response) 有啥区别 [重复]