jsp filter_image图片拦截过滤实例



jsp filter_image图片拦截过滤实例,图片拦截器的配置与使用的简单例子,获取来源地址:

filter_image.jsp文件源码:

<%@ page language=”java” pageEncoding=”utf-8″%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head >
</head>
<body>
<img src=”images/02.jpg” height=”80%” width=”30%”><br>
<hr>
站内引用图片
</body>
</html>

Filter_Image.java文件源码:

package com.cn.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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Filter_Image implements Filter {


public void destroy() {
}

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
//把ServletRequest对象强转成HttpServletRequest对象
HttpServletRequest request = (HttpServletRequest) req;
//把ServletResponse对象强转成ServletResponse对象
HttpServletResponse response = (HttpServletResponse) res;
// 链接来源地址
String referer = request.getHeader(“referer”);
// 判断链接来自若来自其他地址
if (referer == null || !referer.contains(request.getServerName())) {
//跳转到错误页面
request.getRequestDispatcher(“/error.jsp”).forward(request, response);
} else {
// 图片正常显示
chain.doFilter(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException {
}

}

web.xml配置图片过滤:

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.5″
xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

<filter>
<filter-name>imageRedirectFilter</filter-name>
<filter-class>com.cn.filter.Filter_Image</filter-class>
</filter>
<filter-mapping>
<filter-name>imageRedirectFilter</filter-name>
<url-pattern>/images/*</url-pattern>
</filter-mapping>

</web-app>