过滤器Filter实用实例
来源:互联网 发布:叮叮当卖家版软件 编辑:程序博客网 时间:2024/06/03 21:36
一、日志记录过滤器
功能描述:通过日志记录过滤器记录应用中被访问资源的URL以及时间。因此,可以用来统计被访问最多的资源及其时间
设计:
1.过滤器名称:LoggingFilter
初始化参数:filterName="log.txt" path="E:/" --指定存储位置
访问前缀:prefix = "URI:" --虚拟的URI
2.方法说明:
init()方法,用户初始化数据
doFilter()方法,用户实现相应的业务逻辑
destory()方法,用户清理资源
3.源代码
package filter;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;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.annotation.WebInitParam;import javax.servlet.http.HttpServletRequest;@WebFilter(filterName = "LoggingFilter", urlPatterns = { "/*" }, initParams = { @WebInitParam(name = "logFileName", value = "log.txt"), @WebInitParam(name = "prefix", value = "URI: ") })public class LoggingFilter implements Filter { private PrintWriter logger; private String prefix; @Override public void init(FilterConfig filterConfig) throws ServletException { prefix = filterConfig.getInitParameter("prefix"); String logFileName = filterConfig .getInitParameter("logFileName"); String appPath = filterConfig.getServletContext() .getRealPath("/"); // without path info in logFileName, the log file will be // created in $TOMCAT_HOME/bin System.out.println("logFileName:" + logFileName); try { logger = new PrintWriter(new File(appPath, logFileName)); } catch (FileNotFoundException e) { e.printStackTrace(); throw new ServletException(e.getMessage()); } } @Override public void destroy() { System.out.println("destroying filter"); if (logger != null) { logger.close(); } } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { System.out.println("LoggingFilter.doFilter"); HttpServletRequest httpServletRequest = (HttpServletRequest) request; logger.println(new Date() + " " + prefix + httpServletRequest.getRequestURI()); logger.flush(); filterChain.doFilter(request, response); }}
1.功能描述:通过图片保护过滤器,可以阻止外界直接通过地址栏输入图片URL访问图片。
原因:直接访问图片时,请求头部(Header)中referer为空,当 被引用时,该referer不为空
2.过滤器:ImageProtectorFilter
初始化参数:无
映射路径:*.jpg,*.png,*.gif
3.源代码:
package 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;@WebFilter(filterName="ImageProtectorFilter", urlPatterns={"*jpg", "*.png", "*.gif"})public class ImageProtectorFilter implements Filter {public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)throws IOException, ServletException {HttpServletRequest httpServletRequest = (HttpServletRequest)request;String referer = httpServletRequest.getHeader("referer");if(referer != null){filterChain.doFilter(request, response);}else{new ServletException("Image not available");}}public void init(FilterConfig arg0) throws ServletException {}}
三、总结
过滤器可以对我们用户的请求进行拦截,对于不合理的请求进行过滤。因此,可用于用户登录验证,下载计数,图片保护,日志记录的功能。
0 0
- 过滤器Filter实用实例
- Filter 过滤器实用详解
- filter过滤器原理实例
- filter过滤器简单实例
- JSP Filter过滤器的简单实例.
- Filter 过滤器的执行顺序与实例
- JSP Filter(过滤器)简单实例
- Servlet- Filter-实例-非法字符过滤器
- 过滤器Filter
- 过滤器Filter
- Filter 过滤器
- 过滤器 filter
- 过滤器filter
- 过滤器,Filter
- 过滤器Filter
- filter--过滤器
- 过滤器Filter
- filter过滤器
- 让你提升命令行效率的Bash快捷键
- App中WebView元素的定位方式
- php依赖注入相关理解
- java JSON学习—List集合转换成JSON对象
- java设计模式-----单例设计模式
- 过滤器Filter实用实例
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- php闭包相关理解
- CAS 实现单点登录SSO
- 混合App测试
- 大光头的shader学习之路-自己写的一个消融效果
- C语言基础知识
- 在类的成员函数中调用delete this
- 【杭电 1009】 FatMouse' Trade