Jsp标签_简单标签_防盗链和转义标签的实现
1防盗链
在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。
2页面中的转义字符
在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。
字符 转义字符
" "
& &
< <
> >
空格
-------------------------------------------------------------------------------------------------------
2.1防盗链的实现
1.tld约束
复制代码
<tag>
<name>referer</name>
<tag-class>com.tag.RefererTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>site</name>
<required>true</required>
</attribute>
<attribute>
<name>page</name>
<required>true</required>
</attribute>
</tag>
复制代码
2.实现了简单Tag接口的自定义Tag处理类
复制代码
package com.tag;
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 context = (PageContext)this.getJspContext();
HttpServletRequest request = (HttpServletRequest)context.getRequest();
HttpServletResponse response = (HttpServletResponse)context.getResponse();
String referer = request.getHeader("referer");
String path = request.getContextPath();
if(referer==null||referer.startsWith(site)){
if(page.startsWith(path))
response.sendRedirect(page);
else if(page.startsWith("/"))
response.sendRedirect(path+page);
else
response.sendRedirect(path+"/"+page);
// throw new SkipPageException(); 不执行
// 执行则是jsp片段invoke
}
}
}
推荐阅读
-
用定制标签库和配置文件实现对JSP页面元素的访问控制
-
jQuery简单获取DIV和A标签元素位置的方法
-
基于HTML标签marquee实现滚动效果的简单方法
-
使用jsp自定义标签库实现数据列表显示模拟cms4j中的标签库效果
-
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)_PHP
-
jquery实现的随机多彩tag标签随机颜色和字号大小效果
-
WordPress中给媒体文件添加分类和标签的PHP功能实现,
-
标签云在MongoDB和go中的实现
-
使用foreach和volist标签分别实现模板数据的分页显示-2018年6月1日11点30分
-
iOS利用Label实现的简单高性能标签TagView