如何在不触及每个 JSP 文件的情况下为所有 JSP 设置 pageEncoding?

How do I set pageEncoding for all my JSPs without touching each JSP file?

我正在使用 Java 6、JBoss 7.1.3 和 Spring 3.2.11.RELEASE。尽管我们在应用程序上下文中设置了它

<bean id="systemPrereqs"
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" value="#{@systemProperties}" />
    <property name="targetMethod" value="putAll" />
    <property name="arguments">
        <!-- The new Properties -->
        <util:properties>
            <prop key="org.apache.catalina.connector.URI_ENCODING">UTF-8</prop>
        </util:properties>
    </property>
</bean>

我注意到在我的 JSP 上,除非我们指定

,否则特殊字符无法正确呈现
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

在 JSP 页面的顶部。这对一个 JSP 来说很好,但是必须遍历整个应用程序来添加这些指令是很麻烦的。是否有一个更全局的地方我可以指定它,比如在 Spring 上下文中或某个地方,它将普遍地将上述指令添加到我们所有的 JSP 页面?

同时添加以下系统 属性:

<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>

在您的 web.xml 中输入以下内容:

<jsp-config>
  <jsp-property-group>
     <url-pattern>*.jsp</url-pattern>
     <page-encoding>UTF-8</page-encoding>
     <default-content-type>text/html</default-content-type>
  </jsp-property-group>
</jsp-config>

更多信息:https://docs.oracle.com/cd/E17904_01/web.1111/e13712/web_xml.htm#WBAPP539

将以下内容放入您的 web.xml .

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

使用过滤器怎么样?

<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>