1.导包:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- jstl表达式依赖-->
<!-- 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>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<!-- Standard标签库依赖-->
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
2.编写过滤器:
public class CharacterEncodingFilter implements Filter {
//过滤器,注意在实现接口的时候Filter包的来源javax.sevlet
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter 初始化");
//初始化:web服务器启动,就完成初始化,随时等待过滤对象出现!
}
@Override
// chain 链
//1.过滤中所有的代码,在过滤特定请求的时候都会执行(本次过滤对象是带有/servlet的网址)
//2.过滤完成后需要让浏览器继续前行: chain.doFilter(request, response);
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
System.out.println("执行前");
chain.doFilter(request, response);//让请求继续前行,如果不写程序到此就会停止
System.out.println("执行后");
}
@Override
public void destroy() {
//web服务器关闭的时候,过滤器会被销毁
System.out.println("CharacterEncodingFilter 销毁");
}
}
过滤器web.xml配置
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.hua.Filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!-- 只要是servlet请求,都会经过这个过滤器-->
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
被过滤程序的web.xml配置
ShowServlet
/servlet/show
servlet
com.hua.servlet.ShowServlet
servlet
/show
被过滤的程序:
public class ShowServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// response.setCharacterEncoding(“GBK”);
response.getWriter().print(“你好”);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}