Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP:can';t了解如何为GlassFish 3.1.2响应设置UTF-8_Java_Jsp_Encoding_Utf 8_Glassfish - Fatal编程技术网

Java JSP:can';t了解如何为GlassFish 3.1.2响应设置UTF-8

Java JSP:can';t了解如何为GlassFish 3.1.2响应设置UTF-8,java,jsp,encoding,utf-8,glassfish,Java,Jsp,Encoding,Utf 8,Glassfish,我正在使用GlassFish 3.1.2,每次访问JSP页面时都会看到以下警告: PWC4011:无法从将请求字符编码设置为UTF-8 context/myapp,因为已读取请求参数, 或已调用ServletRequest.getReader() 我的JSP文件以以下内容开头: <%@page pageEncoding="UTF-8"%> 我的WEB-INF/WEB.xml文件是: <?xml version="1.0" encoding="UTF-8"?> <!

我正在使用GlassFish 3.1.2,每次访问JSP页面时都会看到以下警告:

PWC4011:无法从将请求字符编码设置为UTF-8 context/myapp,因为已读取请求参数, 或已调用ServletRequest.getReader()

我的JSP文件以以下内容开头:

<%@page pageEncoding="UTF-8"%>
我的
WEB-INF/WEB.xml
文件是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
    <parameter-encoding default-charset="UTF-8"/>

    <jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
    </jsp-config>

</glassfish-web-app>
   <?xml version="1.0" encoding="UTF-8"?>
   <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
但我不知道如何解决这个问题

我的
web.xml
使用Servlet2.5,我相信这就是JSP2.1(我知道JSP1.x不支持UTF-8,但我认为JSP2.1支持UTF-8)。我尝试从升级
web.xml
文件开始

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
变得公正

personName = request.getAttribute("personName");
警告消失了。这是否意味着
request.setCharacterEncoding(“UTF-8”)request.getParameter()
之前,code>应该只出现在Java servlet中,而不出现在JSP页面中

更新2

我仍然在GlassFish server.log文件中看到一个编码警告,尽管这次它不是来自我的web应用程序:

[#| 2014-11-10T10:02:57.234-0800 |警告| glassfish3.1.2 | org.apache.catalina.connector.Request | | u ThreadID=57;| u ThreadName=Thread-2;| PWC4011: 无法从上下文中将请求字符编码设置为UTF-8, 因为已读取请求参数,或者 ServletRequest.getReader()已被调用|#]

不确定这是从哪里来的,也不知道如何修复,但我将通过添加GlassFish管理控制台
-Dfile.encoding=UTF8
中的选项来修改GlassFish JVM编码:
Configurations>server config>JVM Settings>JVM Options
,然后重新启动服务器


我还添加了如下所示的字符集筛选器:。虽然它是为Tomcat制作的,但我希望它对GlassFish仍然有效。

解决方案: 创建/编辑文件glassfish-web.xml(文件夹web-INF):


保留生成的servlet类的java代码的副本。
看看这个:
request.setCharacterEncoding("UTF-8");
personName = request.getAttribute("personName");
personName = request.getAttribute("personName");
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" 
"http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
    <class-loader delegate="true"/>
    <!-- Change the default character encoding from ISO-8859-1 to UTF-8 -->
    <parameter-encoding default-charset="UTF-8"/>
    <jsp-config>
        <property name="keepgenerated" value="true">
            <description>Keep a copy of the generated servlet class' java code.</description>
        </property>
    </jsp-config>
</glassfish-web-app>