写之前记得导包
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
- 写一个编码过滤器
import javax.servlet.*;
import java.io.IOException;
//过滤器filter
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器被启动(初始化)");
}
@Override
//Chain : 链
/*
1. 过滤中的所有代码,在过滤特定请求的时候都会执行
2. 必须要让过滤器继续通行
chain.doFilter(request,response);
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//设置请求和响应的编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//设置响应的文本格式
response.setContentType("text/html;charset=UTF-8");
System.out.println("CharacterEncodingFilter执行前....");
chain.doFilter(request,response); //让我们的请求继续走,如果不写,程序到这里就被拦截停止!
System.out.println("CharacterEncodingFilter执行后....");
}
@Override
public void destroy() {
System.out.println("过滤器被销毁");
}
}
- 去web.xml中配置过滤器的映射
<!-- 配置过滤器映射-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.liu.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!--只要是 /servlet的任何请求,会经过这个过滤器-->
<url-pattern>/servlet/*</url-pattern>
<!--<url-pattern>/*</url-pattern>-->
<!-- 别偷懒写个 /* -->
</filter-mapping>
- 写一个servlet实现类(输出一句中文试一下)
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("你好,李焕英");
}
- 去web.xml中配置servlet的映射(配置两条映射)
<servlet>
<servlet-name>FilterServlet</servlet-name>
<servlet-class>com.liu.servlet.FilterServlet</servlet-class>
</servlet>
<!--这条会经过这个过滤器-->
<servlet-mapping>
<servlet-name>FilterServlet</servlet-name>
<url-pattern>/servlet/hello</url-pattern>
</servlet-mapping>
<!--这条不会经过这个过滤器-->
<servlet-mapping>
<servlet-name>FilterServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>