关闭

JavaWeb -- 自定义标签实例, 防盗链, JSTL 核心标签

672人阅读 评论(0) 收藏 举报
分类:

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>



 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

JSTL核心标签库之简单介绍

定义       JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开源的JSP标签库,是一个实现Web应用程序中常见的通用功能的定制标记库集,这些功...
  • qiaqia609
  • qiaqia609
  • 2013-11-16 19:52
  • 7355

JSTL标签库之核心标签

JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的。使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码。JSTL标签库的分类 核心标签(用...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016-08-16 21:12
  • 1933

JSTL1.1函数标签库(functions)如fn:length 与 JSTL 自定义Function函数标签

在jstl中的fn标签也是我们在网页设计中经常要用到的很关键的标签,在使用的时候要先加上头 http://java.sun.com/jsp/jstl/functions"  prefix="fn"%...
  • wenzhihui_2010
  • wenzhihui_2010
  • 2014-07-30 09:33
  • 1541

JSTL标签库之核心标签

一、JSTL标签库介绍     JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的。使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二、JST...
  • m8396017
  • m8396017
  • 2016-06-09 01:41
  • 3456

使用自定义标签重写JSTL核心标签库if标签

使用自定义标签重写JSTL核心标签库标签使用自定义标签重写JSTL核心标签库标签 概述 实现 概述学习了自定义标签,并写了简单的测试demo之后,我决定要使用自定义标签实现JSTL核心标签库中的标签,...
  • jpzhu16
  • jpzhu16
  • 2016-09-13 18:55
  • 995

JSTL标签详细教程之——核心库

JSTL(JSP Standard Tag Library,JSP标准标签库),目前最新版本是1.2,包括四个标签库(core、format、xml、sql),这一篇主要讲解JSTL的核心库即core...
  • xiaoed
  • xiaoed
  • 2015-02-03 11:47
  • 1456

JSTL核心标签库的使用方法和示例

JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out、set、remove、catch 2. 流程控制标签:if、choose、when、otherwise 3. ...
  • jeff06143132
  • jeff06143132
  • 2013-09-05 19:12
  • 1735

jstl自定义标签防盗链

jstl自定义标签防盗链 *自定义标签的使用主要包括以下三个部分 1.tagServlet代码设计 2.tld文件配置 3.jsp页面引用自定义标签 代码块tagServlet代码如下:@requir...
  • datoubangzhu
  • datoubangzhu
  • 2017-02-11 12:44
  • 148

自定义JSTL 标签(Tag) 项目实践使用总结

说明:开发自定义Tag 和 自定义Function目的当然是更加灵活方便的在jsp页面进行操作并弥补jstl在项目实践中的不足之需。一次开发便可以一劳永逸的使用! 自定义标签有经典标签和简单标签两种实...
  • BiLaHePan
  • BiLaHePan
  • 2017-01-31 22:59
  • 595

分页插件开发(1)--jstl自定义标签

平时的开发中分页应该算是非常常用的功能了,以前用的基本都是js来控制页面效果,不过总觉得js有点散乱,所以这次使用jstl的自定义标签功能封装一个分页插件。 一、自定义标签库 <taglib x...
  • u283056051
  • u283056051
  • 2015-11-01 18:19
  • 665
    个人资料
    • 访问:776160次
    • 积分:11501
    • 等级:
    • 排名:第1549名
    • 原创:297篇
    • 转载:488篇
    • 译文:0篇
    • 评论:44条
    最新评论