过滤器 作用
1 程序运行后加入的
2 功能
对用户登录过滤(在每个jsp中判断session)
网上聊天,屏蔽非法文字
统一编码
自动执行
javax.servlet.Filter
public interface Filter
init
void init(FilterConfig filterConfig) throws ServletException
doFilter
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
destroy
void destroy()
标准servlet的 doGet,doPost参数是httpservletrequest
过滤器是组件,用时直接加上。
在web.xml部署,同servlet
<filter>
<filter-name>first</filter-name>
<filter-class>org.sw.filter.FirstFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>first</filter-name>
<url-pattern>/*</url-pattern>
与servlet中的url-pattern不一样。表示对那个页面进行过滤,*表示对所有页面都过滤
</filter-mapping>
作为第三方的调用
如果过滤器要将内容传到目的地,则需要FilterChain方法继续传送
public interface FilterChaindoFilter
void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException
过滤器也会执行2次
--->过滤非法文字
只要有request ,就可以用requestdispatcher进行跳转
--->对内容进行统一编码
request.setCharacterEncoding("gb2312");
以后就不用设码了。
--->对是否登录进行认证session
session属于http范畴,所以需要转换为http范围
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session=req.getSession();
if(session.getAttribute("name")!=null){
chain.doFilter(request,response);
}
else{
request.getRequestDispatcher("login.jsp").forward(request,response);
}
开发时只专注于具体业务的实现,登录验证留给第三方