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>
时间: 2024-11-08 23:01:27