如果servlet中输出的内容是中文时,就会出现??,这些是乱码,该如何解决呢?
以往我们使用过滤器的方式来统一解决乱码问题,在这里,我们也一样使用过滤器来解决此问题,但是在tomcat中,过滤器也可以不在web.xml中配置一样可以使用,这个配置被一个注释替代,
代码:
package web.filter; 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; import javax.servlet.annotation.WebFilter; @WebFilter(urlPatterns={"/*"}) public class CharactorFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { arg0.setCharacterEncoding("GBK"); arg1.setCharacterEncoding("GBK"); arg2.doFilter(arg0, arg1); } @Override public void init(FilterConfig arg0) throws ServletException { } }
这个类的功能就是实现编码的转换,解决乱码的问题,和servlet一样,在类开始处加上一个注记@WebFilter,括号里的参数是此过滤器拦截的路径,这里拦截所有的请求路径,不过和servlet一样,由于编码值的参数都写死在代码中,灵活性要降低,所以说有得也有失吧,看具体情况再决定。