在上一讲中,描述了如何使用简单标签开发自定义标签。既然开发了自定义的标签,如果要给别人去使用,我们就要像JSTL那样,将自己开发的标签打成jar包,如果别的工程要使用的话,直接将jar包导入到工程中就可以了。
首先,我们可以建一个java工程,在根目录下建立一个文件夹:META-INF,这个文件夹是用来存放我们写的tld文件的,src下建立自己的包,然后将自己编写的类文件放在src的包中。工程的结构如下:
下面给一个小Demo
首先,我们自己定义模拟JSTL的<c:if>标签
JyIfTag.java
package com.jjyy.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* 自定义if标签
* @author JiangYu
*
*/
public class JyIfTag extends SimpleTagSupport {
private boolean test;
@Override
public void doTag() throws JspException, IOException {
if(test){
getJspBody().invoke(null);
}else{
}
}
public void setTest(boolean test) {
this.test = test;
}
}
然后,在写一个防盗链的标签
JyRefererTag.java
package com.jjyy.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.tagext.SimpleTagSupport;
/**
* 自定义防盗链标签
* @author JiangYu
*
*/
public class JyRefererTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
PageContext pc = (PageContext) getJspContext();
HttpServletRequest request = (HttpServletRequest) pc.getRequest();
HttpServletResponse response = (HttpServletResponse) pc.getRequest();
String referer = request.getHeader("Referer");
if(referer==null||referer==""||referer.indexOf("http://localhost")<0){
response.sendRedirect(request.getContextPath()+"/index.jsp");
return ;
}
}
}
最后我们来编写tld文件:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
<span style="white-space:pre"> </span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
<span style="white-space:pre"> </span>http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>JY</short-name>
<uri>http://www.jjyy.com</uri>
<tag>
<name>Referer</name>
<tag-class>com.jjyy.tag.JyRefererTag</tag-class>
<body-content>empty</body-content>
</tag>
<tag>
<name>If</name>
<tag-class>com.jjyy.tag.JyIfTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>boolean</type>
</attribute>
</tag>
</taglib>
到这里,开发标签的任务就结束了。下面我们就是要把自己开发的自定义标签打成jar包。
打好了jar包后,我们就可以试一下自己的标签了,新建一个web工程,将刚才打好的jar包导入到工程中:
最后新建一个jsp页面,使用我们自定义的标签:注意记得在jsp页面导入标签
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.jjyy.com" prefix="JY" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>自定义标签打包后使用</title>
</head>
<body>
<JY:If test="${1<2}">
确实是这样!!!
</JY:If>
<JY:If test="${1>=2}">
你确定吗?
</JY:If>
</body>
</html>
启动tomcat,访问写好的页面,输出结果为:
分享到:
相关推荐
jsp自定义的标签如何打包成jar包,让你轻松导入项目中,本资源让你一目了然
简单易懂没什么 太难理解的代码好好学习研究
main.js中的引入顺序决定了打包后css的顺序,组件内的样式没有生效可能是被第三方组件样式覆盖了,所以把第三方组件放在前面引入,router放在后面引入,就可以实现组件样式在第三方样式之后渲染。 代码如下: main....
java自定标签,里面讲解了自定义标签的原理,以及如何使用自定义标签(java文件自定标签和jsp自定标签以及如何打包自己的自定义标签)。
相比于Qt5,Tkinter在打包后的大小要小77.5%,这使得它在处理一些对资源占用要求较高的场景(如嵌入式设备或低性能设备)时具有明显的优势。这个文件包是一个使用Tkinter制作的Python程序的图形用户界面(GUI),它...
为方便大家安装,这里还把最佳推荐的扩展打包为单独的扩展文件,如不喜欢自行卸载添加! <br>标签定制 CE版 Tab Mix Lite CE 不用多说了,大家期盼已久,支持FF3.0的版本终于复出了!再次感谢Mozine开发团队!还在...
8.7.2 自定义标签基础内容 8.7.3 演示自定义标签 8.7.4 测试自定义标签 8.8 本章小结 第9章 ajax 9.1 ajax基础知识 9.2 ajax实战 9.2.1 在远程方法调用前后执行代码 9.2.2...
内置了数据自定义数据调用功能,丰富的调用标签,可将任何数据调用在任何页面,从而达到独有的特色网站。 与各类系统的联动 可以整合UCenter(账户、短信、好友、积分兑换、Feed推送和个人空间插件),从而可联动...
无限循环(循环嵌套)标签、自定义标签、数据缓存等功能,支持条件判断,系统函数直接调用等灵活的功能。功能及系统特点:1、 完美的兼容性:兼容Android、iOS、黑莓等手机操作平台。2、 App在线生成:商业用户将...
通过dotnet publish将Core版本进行打包后,可支持绿色部署,不需要运行时。Owin与CoreYOYOFx的Http实现都是基于Owin协议的,并提供两个独立版本NETSTANDRD1.x和NET45x版本。目前完成:封装Owin协议的HttpContext...
8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...
基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理和友链管理等。 技术使用 规范实现: 统一请求响应 统一异常处理 Java Bean Validation...
第12章:编写自定义插件/12.4 使用自定义插件/12.4.1 在新建的Maven项目中引用自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.2 测试自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.3 ...
n431 使用缓存后替换 n432 用户控件缓存 n433 共享用户控件的输出缓存 n434 以编程方式处理用户控件缓存 n435 创建用户控件缓存的文件依赖 n436 缓存动态载入的用户控件 n44 使用数据源缓存 n441 使用绝对缓存过期...
vue-form-create基于 Vue3.0 + TS 的自定义...$ npm install vue-form-create --save$ yarn add vue-form-create浏览器引入在浏览器中使用 script 标签直接引入文件,并使用全局变量 formCreate。我们在 npm 发布包内
--引用自定标签的name myTaskExample--> <!--用echo显示各种的属性--> 当前系统的用户名:${user.name}" /> 当前系统的版本:${os.version}" /> 当前系统的安装路径:${user.home}" /> 的xml文件:${...
三、“抓取信息标签”是指列表后页面中要制定抓取的信息容器型标签。(如果抓取整页信息请为空),然后点 击“开始抓取列表内容”。 四、当抓取记录操作中出现抓取日志时。网页HTML字符串已经保存完毕。可是图片可能...
模板解析后,Luda参与了该过程,并将诸如数据绑定和自定义标签打包之类的解析工作留给了faviroute框架。 这样,无论在前端框架还是后端框架中,您都可以以最大的灵活性打包可重用的Luda组件。 在了解有关Luda的更多...
三、“抓取信息标签”是指列表后页面中要制定抓取的信息容器型标签。(如果抓取整页信息请为空),然后点 击“开始抓取列表内容”。 四、当抓取记录操作中出现抓取日志时。网页HTML字符串已经保存完毕。可是图片可能...
Joomla插件包括:google分析插件、Joomla google 天气预报模块、Joomla 幻灯播放、Joomla 标签卡片式插件、Joomla多语言支持、lightbox照片展示、thickbox插件、广告栏淡入淡出、登录、自定义模板_应用_QQ在线咨询、...