标签的好处就是能够让JSP界面不出现Java脚本代码,然后加上属性这个东西就大大增强了标签的可复用性,下面我们使用标签技术来开发一个防盗链标签。
首先还是写一个类实现SimpleTagSupport
package com.bird.web.tag.example;
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 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();
HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
//1.首先的到来访者的网址
String referer = request.getHeader("referer");
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();
}else{
}
//2.判断是否是来自防盗链的网站
}
}
这个标签带两个属性,一个是site也就是这个防盗链需要来自什么地方的连接才能够访问,第二个page的意思是如果是其他位置访问本页面需要跳转到哪里去。
JspContext必须转型为pageContext才能获得需要的几个对象,然后根据浏览器带过来的referer头就可以知道访问位置,然后对于标签的友好型,还可以自己设置输入格式,下面需要在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>Bird</short-name>
<uri>/example</uri>
<tag>
<name>referer</name>
<tag-class>com.bird.web.tag.example.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>
然后使用这个标签就可以了
分享到:
相关推荐
jsp使用自定义标签taglib分页系列——完整例子
本视屏是李兴华老师讲解的jsp中基本标签的介绍及使用。 初学jsp的人可以很快了解jsp中基本标签的使用。
JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签
jsp-config标签使用详解 仅作为参考
jsp中使用echarts包括echarts的饼图,柱状图,折线图等等
jsp自定义迭代标签 jsp自定义迭代标签
主要介绍了jsp实现防盗链的方法,通过判断来路地址实现针对外部访问的过滤功能,具有一定参考借鉴价值,需要的朋友可以参考下
防止他人引用自己的图片,或者盗用自己的图片
该资料中含有jsp标准标签库的使用案例,涵盖了常用的jsp标签、条件标签、迭代标签等等
Java jsp 页面中使用jstl标签库的jar包
采用加密客户端ip信息作为验证码提供给IIS验证实现防盗链的,也就是说一个IP地址对应一个下载地址,所以某个用户即使得到了下载地址,他也只能在他的IP下才能下载, 发给别人是用不了的,所以很好地达到了防盗连效果...
tag标签相关属性:实现简单标签处理程序 标签处理程序是一个在运行时调用的Java类,它包含在 JSP文件中使用的自定义标签的实现代码.标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet...
jsp自定义嵌套标签 自定义嵌套标签的定义和使用
本人自行研究JSP自定义标签的学习笔记 目录如下: 目录 一、概述 1 1.1 使用简单标签机制 2 1.2 使用标签文件 3 二 、自定义标签简介 3 2.1 自定义标签概念 3 2.2 标签相关概念 3 2.3 如何创建自定义标签 3 三、自...
jsp中常见的一些标签应用,方便在jsp页面中的逻辑操作。
项目用到echars开发报表,经过两天的苦战,终于搞出来实例,jsp页面集成echarts,用到的echarts版本为echarts-1.4.1希望能够给你带来帮助。
JSP自定义分页标签,mysql数据库,通过导入jar包,使用标签的方式实现分页的功能。
NULL 博文链接:https://liyx985.iteye.com/blog/1236794
html:select>标签的用法 <html:select property="theChoice"> </html:select>