防盗链过滤器
使用過(guò)濾器,防止通過(guò)其他URL地址直接訪問(wèn)本站資源
應(yīng)用request對(duì)象的getHeader()方法獲得信息頭來(lái)源地址,若是來(lái)自其他網(wǎng)站就彈出錯(cuò)誤圖片
創(chuàng)建Filter過(guò)濾器的實(shí)現(xiàn)類ImageFilter,在doFilter()方法中對(duì)request進(jìn)行驗(yàn)證,將圖片顯示在頁(yè)面之前,驗(yàn)證客戶端是否來(lái)自本網(wǎng)站
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對(duì)象HttpServletResponse response=(HttpServletResponse)res; //response對(duì)象String imurl=request.getHeader("imurl"); //鏈接的來(lái)源地址if(imurl==null||!imurl.contains(request.getServerName())){ //判斷訪問(wèn)來(lái)源request.getRequestDispatcher("/errorimage.gif").forward(request, response); //顯示錯(cuò)誤圖片}else{chain.doFilter(request, response); //顯示正確圖片}}@Overridepublic void init(FilterConfig arg0) throws ServletException {} }web.xml中配置Filter,該過(guò)濾器從request信息頭中獲取請(qǐng)求來(lái)源
<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頁(yè)面
<%@ 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>防盜鏈過(guò)濾器</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">來(lái)自本站地址訪問(wèn)圖片<%request.getHeader("imurl"); %></table></form></body> </html>總結(jié)