第一步:编写java文件代码
public class simpleFDL extends
SimpleTagSupport {
private String
site;
//site是要检测的网站,即是否从此网站进入
private String
page;
//当系统检测到用户以盗链方式进行,则先跳转到此页面
public void setSite(String site) {
this.site = site;
}
public void setPage(String page) {
this.page = page;
}
@Override
public void doTag() throws JspException, IOException {
PageContext pagecontext=(PageContext) this.getJspContext(); //(获取的是jspcontext,所以来强转为pagecontext,才能获取到request)
HttpServletRequest request=(HttpServletRequest) pagecontext.getRequest();
//注意获取的是ServletRequest,所以要强转为
HttpServletResponse response=(HttpServletResponse) pagecontext.getResponse();
//1.得到来访问者referer
String referer=request.getHeader("referer"); //"referer"是固定的名称,获取头
//2.判断来访者的页面是否是防盗链网站
if(referer==null||!referer.startsWith(site)){
if(page.startsWith(request.getContextPath())){
response.sendRedirect(page);
//这里要return吗???
}
else if(page.startsWith("/")){
response.sendRedirect(request.getContextPath()+page);
}else{
response.sendRedirect(request.getContextPath()+"/"+page);
}
throw new SkipPageException();
}
}
第二步:编写tld文档
<uri>
/simpletTagFDL</uri>
<tag>
<name>
SimpleFDL</name>
<tag-class>
cn.itcast.web.simpletag.simpleFDL</tag-class>
<body-content>empty</body-content>
<attribute>
<name>
site</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>
page</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
第三步:JSP中的编写 <%@taglib uri="/simpletTagFDL" prefix="hhb" %> <hhb:SimpleFDL site="http://localhost" page="/index.jsp"/> |
JSP防盗链
最新推荐文章于 2021-09-22 16:32:25 发布