JSP:自定义标签之防盗链标签开发

来源:互联网 发布:淘宝买家删除差评链接 编辑:程序博客网 时间:2024/04/28 15:31

使用标签控制页面逻辑案例

<%@ page language="java"  pageEncoding="UTF-8"%>

<%@taglib  uri ="/jsp2-tagexample"prefix="fix"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">

<fix:referersite="http://localhost"page="/index.jsp"></fix:referer>

<html>

。。。


public class RefererTag extends SimpleTagSupport {

         private String page;

         private String site;

         public void setPage(String page) {

                   this.page = page;

         }

         public void setSite(String site) {

                   this.site = site;

         }

         @Override

         public void doTag() throws JspException, IOException {

                   PageContext pageContext=(PageContext) this.getJspContext();

                   HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();

                   HttpServletResponse response= (HttpServletResponse) pageContext.getResponse();

                   String referer=request.getHeader("referer");

                  

                   if(referer==null || !referer.startsWith(site)){

                            String cp=request.getContextPath();

                            if(page.startsWith(cp))

                            {        response.sendRedirect(page);

                            }else if (page.startsWith("/")) {

                                     response.sendRedirect(cp+page);

                            }else

                            {

                                     response.sendRedirect(cp+"/"+page);

                            }

                            throw new SkipPageException();

                   }                

                   else

                            super.doTag();

         }

        

}

<?xml version="1.0" encoding="UTF-8" ?>

 

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

    version="2.0">

    <description>A tag library exercising SimpleTag handlers.</description>

    <tlib-version>1.0</tlib-version>

    <short-name>SimpleTagLibrary</short-name>

    <uri>/jsp2-tagexample</uri>

 

    <tag>

        <name>referer</name>

        <tag-class>cn.itcast.web.tag.eaxmple.RefererTag</tag-class>  

        <body-content>empty</body-content>    

        <attribute>

                 <name>site</name>

                 <required>yes</required>

        </attribute>

        <attribute>

                 <name>page</name>

                 <required>yes</required>

                 <rtexprvalue>true</rtexprvalue>

        </attribute>

    </tag> 

</taglib>


0 0
原创粉丝点击