一、过滤器定义
过滤:安全、干净 过滤应该是一种后加入的功能
二、过滤器在web中的主要作用 1、过滤器是程序运行后加入的 2、功能 任何网站都需要对用户是否登录进行过滤 网上聊天系统,屏蔽非法文字 对请求内容进行统一编码 以上功能都是自动执行的 三、实现过滤器 1、所在类实现filter接口 注意:如果过滤器要将内容传递到目的地,则需要FilterChain ,将请求继续向下转发
- 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;
- public class LoginFilter implements Filter{
- // 初始化方法,是在容器启动时自动初始化的
- @Override
- public void destroy()
- { }
- //处理过滤
- @Override
- public void doFilter(ServletRequest req, ServletResponse resp,
- FilterChain chain) throws IOException, ServletException
- {chain.doFilter(arg0, arg1);}
- //销毁过滤器
- @Override
- public void init(FilterConfig arg0) throws ServletException
- {}}
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;public class LoginFilter implements Filter{ // 初始化方法,是在容器启动时自动初始化的 @Override public void destroy() { } //处理过滤 @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {chain.doFilter(arg0, arg1);} //销毁过滤器 @Override public void init(FilterConfig arg0) throws ServletException {}}
2、web.xml中添加过滤器
- <!-- 添加过滤器 -->
- <filter>
- <filter-name>login</filter-name>
- <filter-class>类所在包.LoginFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>login</filter-name>
- <!-- 与servlet中的url-pattern不同,此处表示对哪个页面进行过滤,如果全部过滤,则“/*” -->
- <url-pattern>/*</url-pattern>
- </filter-mapping>
切记:过滤器是种组件用的时候加上去就可以了 例1---编码转换 建立过滤器设置编码 如:request.setCharacterEncoding("GB2312") 例2---用户是否登录 切记:session属于http范畴,所以ServletRequest对象需要先转换成HttpServletRequest对象 HttpServletRequest req = (HttpServletRequest) request; HttpSession session =req.getSession; 然后进行session验证 四、总结 1、实现filter接口(javax.servlet.Filter) 2、doFilter方法中必须有chain.doFilter(req, resp) 3、web.xml中添加过滤器 4、过滤器是种组件用的时候加上去就可以了 5、原则:开发时只专注于具体的业务实现,而对于登陆之类的验证,肯定属于组件,想整个程序中单独加入的login 类所在包.LoginFilter login /*