package com.neuedu.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 过滤器
* Filter也是一个java类,但是不是所有的java类都是过滤器
* 规范:
* 1.实现 javax.servlet Filter 接口
* 2.实现三个方法
* - init();(初始化-不是必要的)
* - doFilter();(执行过滤器 - 必要的)
* - destroy();(销毁-不是必要的)
*
* 使用:
* - 2.0版本
* <!-- Filter 2.0版本 -->
* <filter>
* <!-- 名 -->
* <filter-name>CharacterEncodingFilter</filter-name>
* <!-- 类路径 -->
* <filter-class>com.neuedu.filter.CharacterEncodingFilter</filter-class>
* </filter>
*
* <filter-mapping>
* <!-- 名 -->
* <filter-name>CharacterEncodingFilter</filter-name>
* <!-- url-pattern URL -->
* <url-pattern>/*</url-pattern>
* </filter-mapping>
*
* - 3.0版本
* 使用注解:@WebFilter("/*")
* 注意:拦截多个@WebFilter({"/a","/b"},....)
*
*
*
* 字符集过滤器
*
* 思路:
*
* 1、创建一个字符集过滤器
*
* 2、实现过滤器(写代码顺序 放行,强转,设置字符集)
* - 强转
* ServletRequest -》HttpServletRequest
* ServletResponse -》HttpServletResponse
*
* - 设置字符集
* request.setCharacterEncoding("utf-8");
* response.setCharacterEncoding("utf-8");
* - 放行 doFilter(request,response);
*
*
* 防盗链过滤器
* 明确:需要拦截目标
*
* - 强转
* ServletRequest -》HttpServletRequest
* ServletResponse -》HttpServletResponse
* - 设置拦截目标
* 利用Session(一个思路)
*
* - 放行 doFilter(request,response);
*
* @author Administrator
*
*/
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器初始化。。。。。");
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
//请求和响应进行强转
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
System.out.println("过滤器执行。。。。。");
//设置字符集
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//放行
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("过滤器销毁。。。。。");
}
}
过滤器基础(字符集过滤器和防盗链过滤器)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...