JSP防盗链

第一步:编写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"/


猜你喜欢

转载自blog.csdn.net/dhzbkj/article/details/80551423