Filter
一次性处理中文乱码,不用每次都添加
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=UTF-8");
准备工作
必须要导入的包servlet-api;jsp-api;jstl-api;standard。
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
创建
在filter下创建我们的过滤器。
CharacterEncodigFilter中
创建完成必须要用到init();doFilter();destroy()不然就会爆红,快捷键alt+回车。
把我们之前代码放进来
package com.ci.filter;
import javax.servlet.*;
import java.io.IOException;
public class CharacterEncodigFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
//初始化,在启动系统时候就初始化了,
System.out.println("初始"); //后台打印下。
}
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);
}
public void destroy() {
//关闭系统才销毁。
System.out.println("销毁"); //后台打印下。
}
}
ShowServlet
在页面中输出中文
public class ShowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("你好");
}
}
web.xml
<!--两个路径启动ShowServlet-->
<servlet>
<servlet-name>ShowServlet</servlet-name>
<servlet-class>com.ci.servlet.ShowServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowServlet</servlet-name>
<url-pattern>/servlet/show</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ShowServlet</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
<!--必须要设置的-->
<!--你要让哪些路径下的内容过滤 /servlet/*表示让servlet下的所有页面都过滤一遍 -->
<!--直接/show则没走/servlet则不会过滤,/servlet/show则实现了我们CharacterEncodigFilter下的代码-->
<filter>
<filter-name>CharacterEncodigFilter</filter-name>
<filter-class>com.ci.filter.CharacterEncodigFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodigFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>