Java 覆盖tomcat连接器

Java 覆盖tomcat连接器,java,servlets,utf-8,tomcat6,iso-8859-1,Java,Servlets,Utf 8,Tomcat6,Iso 8859 1,我开发了一个部署到tomcat实例的应用程序,该实例还承载其他应用程序。出于其目的,端口80上的连接器的URIEncoding设置为“UTF-8”。我想找到一种方法来覆盖servlet的这个设置,而不在另一个端口上指定另一个连接器。我已尝试使用tomcat过滤器设置过滤器,如下所示: @Override public void doFilter(final ServletRequest request, final ServletResponse response, final

我开发了一个部署到tomcat实例的应用程序,该实例还承载其他应用程序。出于其目的,端口80上的连接器的URIEncoding设置为“UTF-8”。我想找到一种方法来覆盖servlet的这个设置,而不在另一个端口上指定另一个连接器。我已尝试使用tomcat过滤器设置过滤器,如下所示:

@Override
public void doFilter(final ServletRequest request, final ServletResponse response,
        final FilterChain filterChain) throws IOException, ServletException {
    request.setCharacterEncoding(encoding);
    filterChain.doFilter(request, response);
}
但这并没有改变任何事情。我的ISO-8859-1编码字符串在登录到servlet时包含意外字符。

该方法仅设置用于请求正文的编码。ServletAPI中没有任何方法可用于声明请求URI的编码。这是特定于servlet容器的。使用Tomcat时,您需要在
级别进行操作


始终存在
useBodyEncodingForURI
config元素,您可以在
中为
setCharacterEncoding
使用该元素来执行所需操作。请参阅。

感谢您的洞察力。然而,我想解码是由tomcat在某处执行的。如果我能找到哪里,也许我能以某种方式覆盖它?@marktieleman,这将需要克隆所有Tomcat并重新编写/部署您自己的版本。没有别的,外部的,你能做的。好的,谢谢你!遗憾的是,如果多个应用程序在一个环境中运行,或者一个应用程序并不总是知道它部署到哪个tomcat实例,那么应用程序无法自行决定使用什么编码。