zoukankan      html  css  js  c++  java
  • Servlet过滤器——仿盗链过滤器

    1.概述

       介绍如何使用过滤器技术,防止通过其他URL地址直接访问本站资源。运行本实例,当URL地址不是本站地址时,在网页中将显示错误提示信息。

    2.技术要点

    主要应用request对象的getHeader()方法获取信息头来源地址,若是来自其它网站就弹出错误图片。getHeader()方法的语法结构如下:

    public String getHeader(String headerName)

    参数说明:

    headerName:指定字符串类型的响应头名称。

    3.具体实现

    (1)创建Filter过滤器的实现类ImageFilter,在doFilter()方法中对request进行验证,实现将图片显示在页面之前,验证客户端请求是否来自本网站。主要代码如下:

    public class ImageFilter implements Filter {
          public void init(FilterConfig config) throws ServletException {
          }
          public void doFilter(ServletRequest req, ServletResponse res,
                      FilterChain chain) throws IOException, ServletException {    
                HttpServletRequest request = (HttpServletRequest) req;                      //request对象
                HttpServletResponse response = (HttpServletResponse) res;                      //response对象
                String imurl = request.getHeader("imurl");                                      //链接的来源地址
                if (imurl == null || !imurl.contains(request.getServerName())) {          //判断访问来源
                      request.getRequestDispatcher("/errorimage.gif").forward(request,   //显示错误图片
                                  response);
                } else {
                      chain.doFilter(request, response);                                       //正常显示图片
                }
          }
          public void destroy() {
          }
    }

    (2)在web.xml中配置Filter,该过滤器是从request信息头中获取请求来源,主要代码如下:

    <filter>
          <filter-name>imageFilter</filter-name>
          <filter-class>com.mr.filter.ImageFilter</filter-class>
    </filter>
    <filter-mapping>
          <filter-name>imageFilter</filter-name>
          <url-pattern>/images/*</url-pattern>
    </filter-mapping>
  • 相关阅读:
    北京大学计算机系2009应试硕士生上机考试(DF)
    我的考研2010(一)
    这张容易看懂...
    关于招商银行信用卡的若干事宜
    20 years
    C/C++中关于qsort的使用
    有道破题~~
    POJ 4010 2011
    有道难题练习赛 Sibonacci
    北京大学计算机系2009应试硕士生上机考试(AC)
  • 原文地址:https://www.cnblogs.com/zkn11199/p/5600296.html
Copyright © 2011-2022 走看看