美文网首页有趣的文章ThoughtWorks欧亚创新工作室JavaEE 学习专题
使用标签控制页面逻辑案例-开发防盗链标签

使用标签控制页面逻辑案例-开发防盗链标签

作者: 小小蒜头 | 来源:发表于2017-05-02 21:06 被阅读23次

1.先写jsp页面:针对 site 网站防盗链,是盗链者跳到 index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="fix" uri="/example" %>
<fix:referer site="http://localhost" page="index.jsp"/>
<html>
<head>
    <title>开发防盗链标签</title>
</head>
<body>
这个页面要防盗链
</body>
</html>

2.写标签处理器类 RefererTag

package cn.itcast.web.tagexample;

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

public class RefererTag extends SimpleTagSupport {
    private String 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();
        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();//得到来访者的request
        HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
        //1.得到来访者的referer
        String referer = request.getHeader("referer");
        //2.判断来访者的页面是不是要防盗链的网站
        if (referer == null || !referer.startsWith(site)) {
            if (page.startsWith(request.getContextPath())) {   
                response.sendRedirect(page);
            } else if (page.startsWith("/")) {
                response.sendRedirect(request.getContextPath() + page);
            } else {
                response.sendRedirect(request.getContextPath() + "/" + page);
            }
            //是盗链者抛出异常
            throw new SkipPageException();
        }
    }
}
  1. 标签描述符文件 example.tld
<?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>example</short-name>
    <uri>/example</uri>
    <tag>
        <name>referer</name>
        <tag-class>cn.itcast.web.tagexample.RefererTag</tag-class>
        <body-content>empty</body-content>

        <attribute>
            <name>site</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>page</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>
  1. 跳转到jsp页面后在添加链接回到要去的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/referer.jsp">去防盗链的网站</a>
</body>
</html>

相关文章

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

    使用标签控制页面逻辑案例: 开发防盗链标签 这里要是实现的是:只有从index.jsp跳转的界面才能查看我的界面信...

  • 使用标签控制页面逻辑案例-开发防盗链标签

    1.先写jsp页面:针对 site 网站防盗链,是盗链者跳到 index.jsp 2.写标签处理器类 Refere...

  • web 2.html CSS

    今日内容: HTML标签:表单标签 CSS:页面美化和布局控制 案例:

  • 8.HTML&CSS

    主要内容: HTML标签:表单标签 CSS:页面美化和布局控制 案例:

  • HTML学习笔记第四天

    a标签综合练习 a标签的作用:用于控制页面与页面之间跳转的; 一、回顾a标签 二、Base标签的使用需求假设:假如...

  • 认识HTML一a标签基本使用

    a标签基本使用 如上图所示: 实时热搜下面文字都是a标签 a标签的作用 用于控制页面与页面之间的跳转的 a标签的格...

  • JSTL标签

    JSTL标签 JSTL是JSP的标准标签库,开发者可以使用JSTL实现JSP页面中逻辑处理。如循环、判断等、在JS...

  • 01-HTML基础-标签

    基础标签 a标签 什么是a标签? a标签的作用:就是同于控制页面与页面之间跳转的 a标签的格式: a标签中的tar...

  • 第三十章 使用 CSP 进行基于标签的开发 - 控制流

    第三十章 使用 CSP 进行基于标签的开发 - 控制流 控制流 CSP标记语言提供了几个标记来促进对页面执行的控制...

  • 关于HTML的几个标签

    iframe标签 iframe标签会在当前页面内嵌套一个页面,这个页面可以通过CSS来控制大小。 iframe标签...

网友评论

    本文标题:使用标签控制页面逻辑案例-开发防盗链标签

    本文链接:https://www.haomeiwen.com/subject/uedhtxtx.html