没有最好的语言,只有最适合的语言。
分类: Web开发
2013-07-11 19:10:55
其中的FilterConfig接口,主要用于获取过滤器中的配置信息。有(1)getFilterName(); 用于获取过滤器的名称(2)getServletContext();获取Servlet上下文(3)getInitParameter(String name);获取过滤器的指定的初始化参数值(4)getInitParameterNames();获取过滤器的所有初始化参数
其中我对ServletContext有点没明白,后来查了一下,发现ServletContext有点类似application ,而application对象用于保存所有应用程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁,但application没有被销毁 时,所有用户都可以共享该application对象。有点类似全局变量。里面有对ServletContext进行了仔细的说明。
下面的程序是一个网站来访数量的统计,当访问该网站的时候,先经过过滤器,过滤器对其进行一次自增。
(1)创建的名称为CountFilter的类,继承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 CountFilter implements Filter {
//来访数量
private int count;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
count++; //访问数量自增
//将ServletRequest转换成HttpServletRequest
HttpServletRequest req = (HttpServletRequest)request;
//获取ServletContext
ServletContext context = req.getSession().getServletContext();
//将来访数量值放入到ServletContext中
context.setAttribute("count", count);
//向下传递过滤器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
String param = filterConfig.getInitParameter("count");
count = Integer.valueOf(param);
}
}
(2)配置创建的过滤器对象,这个配置在web.xml文件下进行操作。代码如下:
xmlns:xsi=""
xsi:schemaLocation="
">
(3)程序首页index.jsp如下:
通过这次学习,我慢慢明白了过滤器的工作机制,对其有了更深入的了解