急!关于response.sendRedirect传递中文参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急!关于response.sendRedirect传递中文参数相关的知识,希望对你有一定的参考价值。
<a href=a.jsp?name=篮球>sdf</a>,这样传递在a.jsp里通过byte[] change = a.getBytes("ISO-8859-1");a = new String(change,"UTF-8");就可以获得正确的结果,但如果用response.sendRedirect("a.jsp?name=篮球");就不行。为什么
用 a.jsp?name=篮球 传递参数 无论你用的是GET、POST请求他 name 的传递方式都是 GET,编码格式都为ISO-8859-1。都要在 a.jsp 上转码`
String str=new String((request.getParameter("name")).getBytes("ISO-8859-1"),"GBK");
再输出 str 就为中文的了` 参考技术A 在action里些 request.setpageencoding("utf-8");
如果是这样你最好写个过滤器就不用每次都写上面那句话了 参考技术B java.net.URLDecoder.decode(obj, "UTF-8");
java.net.URLEecoder.encode(obj, "UTF-8"); 参考技术C 需要先转码
无法使用 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传递中文参数的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 response.sendRedirect 重定向
关于java中sendRedirect,forward和include区别
我遇到的response.sendRedirect跳转不了问题
response.sendRedirect() 和 request.getRequestDispatcher().forward(request,response) 有啥区别 [重复]