1. 自定义标签应用实例1: 防盗链

标签处理类

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 context = (PageContext) this.getJspContext();
HttpServletRequest request = (HttpServletRequest) context.getRequest();
HttpServletResponse response = (HttpServletResponse) context.getResponse(); String referer = request.getHeader("referer"); //获得来访者链接
//System.out.println("referer: " + 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(); //是盗链 后面页面内容不显示
} }
}

tld文件

<tag>
<name>RefererTag</name>
<tag-class>com.kevin.web.tag.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>

应用:该网页不能直接访问, 必须从首页超链接跳转进来

<kevin:RefererTag site="http://192.168.1.113" page="index.jsp" />

2. JSTL核心标签使用 示例

<%@ page language="java" import="java.util.*"  pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JSTL测试</title>
</head>
<body> <br /> ----------------- c:out 标签 ------------------------------------<br />
<c:out value="<a href=''> </a>" default="默认值" escapeXml="true"></c:out> <br /> ----------c:set 标签 可操作各个域 javabean map集合-------------<br />
<c:set var="data1" value="data1xxx" scope="page" />
${data1} <br /> <%
Map map = new HashMap();
request.setAttribute("map", map);
%>
<c:set target="${map}" property="dd" value="xxxxx"></c:set>
${map.dd} <br /> <br /> -------- c:remove 标签 从域中删除域中属性------------------<br />
${data1} <br />
<c:remove var="data1" />
${data1} <br /> <br /> -------- c:catch 标签 抓取异常-----------------<br />
<c:catch var="exception">
<%
int i = 5/0;
%>
</c:catch>
${exception.message} <br /> <br /> -------- c:if 标签 条件判断-----------------<br />
<c:if var="result" test="${user==null}">
c:if test <br/>
</c:if>
${result} <br /> <br /> -------- c:choose 标签 条件判断-----------------<br />
<c:choose>
<c:when test="${user!=null}">用户登录<br/> </c:when>
<c:otherwise>无用户登录<br /> </c:otherwise>
</c:choose> <br /> -------- c:foreach 标签 -----------------<br />
<%
Map map2 = new HashMap();
map2.put("aaaa", "aaaaa");
map2.put("1111", "11111");
request.setAttribute("map2", map2);
%>
<!-- var对应的是 每次获得的对象 存到域里, 对应的关键字 是var -->
<c:forEach var="entry" items="${map2}">
${entry.key} : ${entry.value} <br />
</c:forEach> <c:forEach var="num" begin="1" end="9" step="1">
${num} <br />
</c:forEach> <br /> -------- c:foreach varStatus实现表格间色---------------<br />
<%
List list = new ArrayList();
list.add("aaaaaaaaaa");
list.add("bbbbbbbbbb");
list.add("cccccccccc");
list.add("dddddddddd");
list.add("eeeeeeeeee");
request.setAttribute("list", list);
%> <style>
.even{background-color: red;}
.odd{background-color: green;}
tr:hover{background-color: blue;}
</style> <%-- varStatus获取到一个对象,该对象记录有是第几次迭代--%>
<table border="1px" width="30%">
<c:forEach var="row" items="${list}" varStatus="status">
<tr class="${status.count%2==0?'even':'odd'}">
<td>${row}</td>
</tr>
</c:forEach>
</table> <br /> --- c:url 构造一个URL地址,并且会带上sessionID,参数自动编码 -----<br />
<c:url var="url" value="/index.jsp">
<c:param name="name">中国</c:param>
</c:url>
<a href="${url}" >点点</a> <br /> <br /> -------- c:forTokens 字符串分割---------------<br />
<%
request.setAttribute("data2", "a,b,c,d,e,f");
%>
<c:forTokens var="str" items="${data2}" delims=",">
${str} <br />
</c:forTokens> <br /> -------- c:redirect 重定向---------------<br />
<%--<c:redirect url="/index.jsp"></c:redirect> --%> </body>
</html>

JavaWeb -- 自定义标签实例, 防盗链, JSTL 核心标签的更多相关文章

  1. 3_Jsp标签_简单标签_防盗链和转义标签的实现

    一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来 ...

  2. Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架

    JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...

  3. javaWeb 使用jsp标签进行防盗链

    /** * 1.新建类继承SimpleTagSupport * 新建2个属性, 添加对应的set方法 * 覆盖doTag()方法 */ import java.io.IOException; impo ...

  4. JavaWeb——JSTL 核心标签库使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  5. JSTL核心标签库使用

    JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...

  6. 【JSP】JSTL核心标签库的使用方法和示例

    JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...

  7. EL表达式和JSTL核心标签库

    1 EL表达式 1.1 EL的概述 EL,全名为Expression Language. 主要作用: ①EL表达式主要用于替换jsp页面中的脚本表达式,以便于从各种类型的web域中检索java对象(某 ...

  8. JSTL核心标签

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  9. jsp之jstl核心标签库

    JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...

随机推荐

  1. 山石防火墙debug

    debug dp basic debug dp snoop debup dp drop debug dp filter src-ip ? show logging debug

  2. dfs-求连通块

    状态:若为W则继续搜索 import java.util.Scanner; public class Main { static int n,m; static char[][] field; sta ...

  3. js内置数据类型

    JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object). 基本类型有六种: number , string , boolean , null , undefined ,  ...

  4. 关于android编程中service和activity的区别

    一. 绝大部分情况下,Service的作用是用来“执行”后台的.耗时的.重要的任务,三者缺一不可,而最重要的原因是第三点:要执行重要的任务. 因为当一个进程启动了Service后,进程的优先级变高了, ...

  5. 玩转type类型(牛逼克拉斯 )

    一.前言 一说起type()方法肯定有很多人都知道这不就是查看某个对象类型的嘛,其实不然,他还有更牛逼的应用------创建类 >>> type(1) <class 'int' ...

  6. XSS Attacks - Exploiting XSS Filter

    XSS Attacks - Exploiting XSS Filter mramydnei · 2015/12/21 10:11 from:http://l0.cm/xxn/ 0x00 前言 这又是一 ...

  7. extern "C" 有关问题

    之前帮老板编译一个库的代码,遇到了一些问题,后来发现问题出现在extern "C"语法上. 1. C/C++语法extern 关键字 extern是C/C++语言中表明函数和全局变 ...

  8. Hibernate深入浅出(九)持久层操作——数据保存&批量操作

      数据保存: 1)session.save session.save方法用于实体对象到数据库的持久化操作.也就是说,session.save方法调用与实体对象所匹配的Insert SQL,将数据插入 ...

  9. 树莓派打造对话机器人 Python(转)

    工具列表 1. **树莓派**(型号不要求,本人使用的是3B) 2. **usb麦克风**(某宝有卖,我就不打广告了) 用来录音 3. **音响或者喇叭**(某宝也有卖) 用来播放 以上就是需要的工具 ...

  10. [转]AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)

    AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect) 1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充 ...