在JSP中使用自定义标签防止盗链(传智播客学习笔记)

来源:互联网 发布:mac如何解压缩rar 编辑:程序博客网 时间:2024/06/05 16:38
1.先编写此类。
package itcast.lxd.web.simpleTagAttrib;import java.io.IOException;import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.SkipPageException;import javax.servlet.jsp.tagext.JspFragment;import javax.servlet.jsp.tagext.SimpleTagSupport;public class referDemo extends SimpleTagSupport{String webSiteReferer ;String webIndex;public void setWebSiteReferer(String webSiteReferer){this.webSiteReferer = webSiteReferer;}public void setWebIndex(String webIndex){this.webIndex = webIndex;}public void doTag() throws JspException, IOException{PageContext pageContext =(PageContext)this.getJspContext();HttpServletRequest request =(HttpServletRequest)pageContext.getRequest();HttpServletResponse response =(HttpServletResponse)pageContext.getResponse();if(request.getHeader("referer")==null||!request.getHeader("referer").startsWith(webSiteReferer)){response.sendRedirect(webIndex);throw new SkipPageException();}else{}}}

这个标签带两个属性,一个是site也就是这个防盗链需要来自什么地方的连接才能够访问,第二个page的意思是如果是其他位置访问本页面需要跳转到哪里去。

JspContext必须转型为pageContext才能获得需要的几个对象,然后根据浏览器带过来的referer头就可以知道访问位置,然后对于标签的友好型,还可以自己设置输入格式,下面需要在tld文件中描述一下这个标签

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE taglib  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><taglib>  <tlib-version>1.0</tlib-version>  <jsp-version>1.2</jsp-version>  <short-name>refererTest</short-name>  <uri>http://www.itcast.lxd.com.referer</uri>  <display-name>JSTL core</display-name>  <description>JSTL 1.0 core library</description>    <tag>    <name>referExample</name>    <tag-class>itcast.lxd.web.simpleTagAttrib.referDemo</tag-class>    <body-content>empty</body-content>    <attribute>      <name>webSiteReferer</name>      <required>true</required>      <rtexprvalue>true</rtexprvalue>    </attribute>     <attribute>      <name>webIndex</name>      <required>true</required>      <rtexprvalue>true</rtexprvalue>    </attribute>  </tag></taglib>

3.0我使用此标签

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib  uri="http://www.itcast.lxd.com.referer" prefix="referTest" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><referTest:referExample webSiteReferer="http://localhost" webIndex="http://www.baidu.com"/><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'refertest.jsp' starting page</title>  </head>  <body>    This is my JSP page. <br>     <font color="red" size="7">     这里是我的隐私日记啊,可以防盗链啊,你们一般人看不到啊 嘎嘎嘎嘎      </font>  </body></html>

	
				
		
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 mi4c不支持4G怎么办 小米手机抢不到怎么办 洗衣机外壳凹了怎么办 塑料手机套变黄怎么办 淘宝上没货了怎么办啊 华为手机音量低怎么办 手机电池冲鼓了怎么办 手机电池起鼓了怎么办 手机信息总提示怎么办 一体机电池不耐用怎么办 血糖偏高怎么办雅培益力佳SR 投诉电话打不通怎么办 宝宝换奶粉拉肚子怎么办 微店没有客源怎么办 itunes文件被保护怎么办 魅族e1黑屏了怎么办 窗帘打孔的扣环怎么办 棉质裤子掉色怎么办 孕期喝咖啡了怎么办 实体店买到假手机怎么办 派派提现没有那么多好友怎么办 派派提现没有支付宝怎么办 电脑电源不够用怎么办 电脑电源不够会怎么办 中行信用卡异常了怎么办 美借还款后秒拒怎么办 海尔空调关不了怎么办 华为p9无服务怎么办 贝贝买到假货怎么办 京东不予退货怎么办? 咸鱼收到货不对怎么办 闲鱼没收到货怎么办 淘宝购物不到货怎么办 百世快递不派送怎么办 圆通快递不派送怎么办 无卡存款没到账怎么办 中国银行分行冻结信用卡怎么办 银行信用卡没还怎么办 免税店提货单丢了怎么办 店长故意整我怎么办 被康妆大道骗了怎么办