解决乱码问题
如果不设置一个过滤器,那么参数涉及到中文的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 {@Overrideprotected 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;@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic 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);}@Overridepublic void destroy() {}}
运行结果:
可以看到乱码问题就解决了。
