这个问题一开始就没有意义。
-
该过滤器是 Tomcat 服务器的一部分 https://tomcat.apache.org/tomcat-8.5-doc/config/filter.html#Set_Character_Encoding_Filter,不是 JBoss 服务器。
- 该 Maven 依赖项基本上将 Tomcat 的引擎安装在 Web 应用程序中。如果您实际上使用 JBoss AS,这只会与服务器自己的 Tomcat 引擎发生冲突。
- 您说您正在使用 JBoss AS,但该错误消息特定于 JBoss WildFly。
我假设您确实针对 JBoss WildFly,而不是 Apache Tomcat 或 JBoss AS。在 JBoss WildFly 中启用 UTF-8 的正确方法是编辑其/standalone/configuration/standalone.xml
更改以下行:
<servlet-container name="default">
添加default-encoding
属性:
<servlet-container name="default" default-encoding="UTF-8">
如果你是actually使用 JBoss AS 7.x 并且该错误只是从测试环境中不小心复制粘贴的,在 JBoss AS 7.x(因此不是 6.x 或更低版本!)中启用 UTF-8 的正确方法是编辑其/standalone/configuration/standalone.xml
在之间添加以下条目<extensions>
and <management>
条目:
<system-properties>
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8" />
</system-properties>
如果您不被允许操纵服务器配置和/或希望保持 Web 应用程序尽可能在不同服务器之间可移植,那么您只需自己创建该过滤器即可。以下是基本行:
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
// ...
}
只需将该类放到 web 应用程序中的任何位置(而不是 JAR 中),它就会自动完成其工作。