开发防盗链标签

      开发防盗链标签,原理不难,就是得到http请求头中的“referer”字段就可以知道用户是从哪里点击到我们网站的,如果用户不是从我们网站点击过来的,或者直接访问我们的jsp页面,那么我们可以让用户首先重定向到首页,然后从首页中点击它所要访问的内容。

    

package com.shizhan;

import java.io.IOException;
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.SimpleTagSupport;

public class Referer extends   SimpleTagSupport{
	private  String site;
	private  String path;
	public void setSite(String site) {
		this.site = site;
	}
	public void setPath(String path) {
		this.path = path;
	}
	
	@Override
	public void doTag() throws JspException, IOException {
	    
		PageContext p=(PageContext) this.getJspContext();
		HttpServletRequest h=(HttpServletRequest) p.getRequest();
		String from=h.getHeader("referer");
		HttpServletResponse hr=(HttpServletResponse) p.getResponse();
		//判断是不是重我们网站点击过来访问的
		if(from==null || !from.startsWith(site))
		{
			//分析path的格式,以方便我们确定重定向地址的格式
			if(path.startsWith(h.getContextPath()))
			{
				hr.sendRedirect(path);
			}
			else if(path.startsWith("/"))
			{
				hr.sendRedirect(h.getContextPath()+path);
			}
			else
			{
			    hr.sendRedirect(h.getContextPath()+"/"+path);
			}
		
			//不继续直接下面的jsp代码
			throw new SkipPageException();
		}
		else
		{
			//继续直接。。。。
		}
		super.doTag();
	}
	
    
}
tld配置文件

 <tag>
	<description>referrer</description>
        <name>ref</name>
	<tag-class>com.shizhan.Referer</tag-class>
	<body-content>empty</body-content>
	
	<attribute>
	     <name>       site   </name>
	     <required>   true    </required>
	     <rtexprvalue> true   </rtexprvalue>
	</attribute>
	
		<attribute>
	     <name>      path   </name>
	     <required>   true    </required>
	     <rtexprvalue> true   </rtexprvalue>
	</attribute>
	
	
    </tag>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值