request.setAttribute(\您还没有登录!\
request.getRequestDispatcher(loginPage).forward(request, response); }
//放行请求 else{
chain.doFilter(request, response); } } }
web.xml文件配置Filter
应用举例——日志拦截器 创建Filter处理类 package filter;
import java.io.IOException;
import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest;
public class LogFilter implements Filter{ //FilterConfig可用于访问Filter的配置信息 private FilterConfig config;
@Override //实现初始化方法
public void init(FilterConfig config){ this.config = config; }
@Override //实现销毁方法
public void destroy(){ this.config = null; }
@Override
//执行过滤的核心方法
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException,ServletException{
//-----------下面对用户请求进行预处理-------------- //获取ServletContext对象,用于记录日志
ServletContext context = this.config.getServletContext(); //将请求转换成HttpServletRequest请求
HttpServletRequest hRequest = (HttpServletRequest)request; //记录日志
context.log(\已经截获到用户的请求地址:\
//Filter只是链式处理,请求依然放行到目的地址 chain.doFilter(request, response);
//-----------下面对服务器响应执行后处理-------------- context.log(\过滤结束\
context.log(\请求被定位到\
} }
web.xml文件配置Filter
作用类似于load-on-startup Servlet,用于在web启动时启动某些后台