解决乱码问题
如果不设置一个过滤器,那么参数涉及到中文的response回应(以及tomcat7以及下版本的request请求)展现给用户的时候就都会出现乱码的。当然可以每次request请求和response回应都可以进行乱码处理,但是这样就会显得十分麻烦,如果有一万次请求和回应,那就要写一万次一样的代码,这显然是不现实的,因此这就可以知道过滤器的作用了。
package com.wjh.Test;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/servlet01")
public class servlet01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("你好呀,小可爱!");
System.out.println("请求到达了servlet01...");
}
}
如果不设置过滤器,那么response呈现给用户的中文就会乱码,运行结果如下:
下面设置一个处理乱码的过滤器:
package com.wjh.Test;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/*")
public class Filter02 implements Filter {
private int count;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("UTF-8");
servletResponse.setCharacterEncoding("UTF-8");
servletResponse.setContentType("text/html;charset=UTF-8");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
运行结果:
可以看到乱码问题就解决了。