云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

HTTP GET如何在分页查询时传递中文参数值

jxf315 2024-12-01 07:22:26 教程文章 48 ℃

分页查询时如果遇到以下错误:

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

请按照以下方法进行修改:

一、分页查询链接修改为按钮:

<input type="button" onclick="jumpPage('<%=keyWord%>', <%=totalPage%>)" value="最后一页" />

其中keyWord和totalPage为Servlet通过request.setAttribute()传递而来的参数。

二、加入JavaScript

<script language="JavaScript" type="text/javascript">

function jumpPage(kw, pgNum) {/*跳转到页面,并传入参数*/

var url = "pageQuery.do?keyWord=" + encodeURIComponent(kw);

url += "¤tPage=";

url += pgNum;

window.location.href=url;

}

</script>

此处关键点在于调用了JavaScript中的encodeURIComponent()函数,会把其中的某些字符将被十六进制的转义序列进行替换。

说明:

1、该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

2、其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

encodeURIComponent("你好,世界!")的结果:

%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C%EF%BC%81

encodeURIComponent("Hello world!")的结果:

Hello%20world!

encodeURIComponent(",/?:@&=+$#")的结果:

%2C%2F%3F%3A%40%26%3D%2B%24%23


这样以来,就可以通过GET方法传递汉字了。

Tags:

最近发表
标签列表