防盗链过滤器
使用過濾器,防止通過其他URL地址直接訪問本站資源
應用request對象的getHeader()方法獲得信息頭來源地址,若是來自其他網站就彈出錯誤圖片
創建Filter過濾器的實現類ImageFilter,在doFilter()方法中對request進行驗證,將圖片顯示在頁面之前,驗證客戶端是否來自本網站
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 ImageFilter implements Filter {@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic 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); //顯示正確圖片}}@Overridepublic void init(FilterConfig arg0) throws ServletException {} }web.xml中配置Filter,該過濾器從request信息頭中獲取請求來源
<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>imageFilter</filter-name><filter-class>com.cn.zj.ServletFilter.ImageFilter</filter-class></filter><filter-mapping><filter-name>imageFilter</filter-name><url-pattern>/images/*</url-pattern></filter-mapping>Myfilter.jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>防盜鏈過濾器</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="" method="post" name="form1"><table background="pg.jpg" width="400" height="234" align="center"><Tr><Td> </Td></Tr></table><table align="center">來自本站地址訪問圖片<%request.getHeader("imurl"); %></table></form></body> </html>總結