tomcat - 带有 Tomcat 的 Geronimo 中的默认编码

标签 tomcat encoding geronimo

我正在寻找使用 Tomcat 为 Geronimo 3 的 HTTP 响应设置默认字符编码的实用方法。似乎有很多解决方法,但没有任何方法可以像 Apache Httpd 那样轻松地在某些文件中设置某些属性。 (Apache Httpd 已将 AddDefaultCharset 用于所有响应。)我已尝试添加属性 useBodyEncodingForURIURIEncoding<connector> var/catalina/server.xml 中的元素.

<Connector name="TomcatWebConnector"
    port="${HTTPPort + PortOffset}"
    address="${ServerHostname}"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="${HTTPSPort + PortOffset}"
    useBodyEncodingForURI="true"
    URIEncoding="UTF-8"
    executor="DefaultThreadPool"/>

但它不起作用。我仍然得到标题 Content-Type text/html;charset=ISO-8859-1作为回应。另一种解决方案是在应用程序中以编程方式更改 header (例如,通过过滤器或阀门),但我没有发现它系统性

最佳答案

我回到两个月前提出的问题。我现在知道使用过滤器的解决方案不是任何解决方法,而是常用方法。只需编写一个过滤器类:

package eu.barbucha.tests;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingSettingFilter implements Filter {
    private final String enc = "utf-8";

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse resp, FilterChain fc)
            throws IOException, ServletException {
        request.setCharacterEncoding(enc);
        resp.setCharacterEncoding(enc);
        fc.doFilter(request, resp);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }
}

并为过滤器分配 WEB-INF/web.xml 文件中的所有 URI:

<filter>
    <description>Filter setting encoding</description>
    <filter-name>enc-filter</filter-name>
    <filter-class>eu.barbucha.tests.EncodingSettingFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>enc-filter</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>

就这些。

关于tomcat - 带有 Tomcat 的 Geronimo 中的默认编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5105727/

相关文章:

java - 提交期间的延迟(使用 JPA/JTA)

encoding - 如何从 VBScript 中的单个字符获取 UTF-8 编码

java - URL 中的 Geronimo 双斜杠 "//",应用程序具有上下文根 "/"

java - 大多数未打补丁的 Tomcat 网络服务器都容易受到攻击,谁的错?

tomcat - 在 Tomcat 6.0.37 32 位上禁用 SSLv3

javascript - 在单独的文件中编码 Javascript

java - 是否有任何技术原因不在 Java 中使用 StandardCharsets?

java - 在 Geronimo 中运行的 Java servlet 的简单例份验证

java - eclipse 上的Tomcat错误

java - Tomcat 中应用特定的过滤器