写之前记得导包
<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>