glassfish中指定默认HTTP 请求参数的编码
GlassFish 处理请求的 URI 编码的方式与处理其参数的编码的方式是不同的。如果是 GET 请求,则会将查询参数附加到 URI "?" 分隔,而如果是 POST 请求,则会将其包含在请求主体内部。
在不同的位置指定这两种类型的编码:
*可以将 URI 编码指定为 domain.xml中<http-listener> 元素的名为uriEncoding的属性的值。该编码默认为UTF-8,适用于相应的 HTTP 侦听器接收到的任何请求 URI。
*另一方面,请求参数编码默认为 ISO-8859-1,可以在以下两个位置之一进行覆盖:通过调用 ServletRequest
的 setCharacterEncoding方法以编程方式在 servlet 内部进行覆盖,或通过将参数编码指定为sun-web.xml 中 <parameter-encoding>元素的default-charset 属性的值以声明方式进行覆盖,如以下示例所示,这里将请求的参数编码设置为UTF-8:
{{{
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN"
"http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_4-0.dtd">
<sun-web-app>
<locale-charset-info default-locale="">
<locale-charset-map locale="" charset=""/>
<parameter-encoding default-charset="UTF-8"/>
</locale-charset-info>
</sun-web-app>
}}}