Filter:过滤器 用于过滤网站数据
处理中文乱码
登录验证
导包一定要正确(javax.servlet)
写一个show,web启动后访问会出现的乱码
public class showservlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("你好!欢迎来到新世界!");//出现乱码
}
}
配置web.xml
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>com.lmh.filter.showservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet/show</url-pattern>
</servlet-mapping>
接着写一个过滤器
public class CharacterEncodingFilter implements Filter {
//初始化
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//初始化:web服务器启动,就已经在初始化,随时等待过滤对象出现
System.out.println("CharacterEncodingFilter初始化");
}
@Override
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");//相当于一个转换站,不需要每个servlet都写一遍
//chain:链
/*
1.过滤的代码 在过滤特定请求时都会执行
2.让过滤器继续同行
filterChain.doFilter(servletRequest,servletResponse);
*/
System.out.println("CharacterEncodingFilter执行前....");
filterChain.doFilter(servletRequest,servletResponse);//让请求继续走,如果不写,程序就会被拦截停止
System.out.println("CharacterEncodingFilter执行后....");
}
//web 关闭时会销毁
@Override
public void destroy() {
System.out.println("CharacterEncodingFilter销毁");
}
}
在配置xml
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.lmh.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都会自动过滤成中文