`
Before_Morning
  • 浏览: 35350 次
文章分类
社区版块
存档分类
最新评论

自定义标签打包后使用

 
阅读更多

在上一讲中,描述了如何使用简单标签开发自定义标签。既然开发了自定义的标签,如果要给别人去使用,我们就要像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简单实例(含代码)

    jsp自定义的标签如何打包成jar包,让你轻松导入项目中,本资源让你一目了然

    tag自定义标签

    简单易懂没什么 太难理解的代码好好学习研究

    解决vue+elementui项目打包后样式变化问题

    main.js中的引入顺序决定了打包后css的顺序,组件内的样式没有生效可能是被第三方组件样式覆盖了,所以把第三方组件放在前面引入,router放在后面引入,就可以实现组件样式在第三方样式之后渲染。 代码如下: main....

    java自定标签

    java自定标签,里面讲解了自定义标签的原理,以及如何使用自定义标签(java文件自定标签和jsp自定标签以及如何打包自己的自定义标签)。

    Tkinter制作Python程序的图形用户界面(GUI),打包后比Qt5减少77.5%.zip

    相比于Qt5,Tkinter在打包后的大小要小77.5%,这使得它在处理一些对资源占用要求较高的场景(如嵌入式设备或低性能设备)时具有明显的优势。这个文件包是一个使用Tkinter制作的Python程序的图形用户界面(GUI),它...

    FireFox 3.0 beta 推荐的扩展打包

    为方便大家安装,这里还把最佳推荐的扩展打包为单独的扩展文件,如不喜欢自行卸载添加! &lt;br&gt;标签定制 CE版 Tab Mix Lite CE 不用多说了,大家期盼已久,支持FF3.0的版本终于复出了!再次感谢Mozine开发团队!还在...

    Grails权威指南

     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推送和个人空间插件),从而可联动...

    智能移动网站管理系统(SmartMobile) v1.2

    无限循环(循环嵌套)标签、自定义标签、数据缓存等功能,支持条件判断,系统函数直接调用等灵活的功能。功能及系统特点:1、 完美的兼容性:兼容Android、iOS、黑莓等手机操作平台。2、 App在线生成:商业用户将...

    基于.Net Core的MVC框架YOYOFx.zip

    通过dotnet publish将Core版本进行打包后,可支持绿色部署,不需要运行时。Owin与CoreYOYOFx的Http实现都是基于Owin协议的,并提供两个独立版本NETSTANDRD1.x和NET45x版本。目前完成:封装Owin协议的HttpContext...

    Struts2 in action中文版

    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 前后端分离开发的动态个人博客系统源码(适合全栈个人学习、毕设、二次开发迭代)

    基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理和友链管理等。 技术使用 规范实现: 统一请求响应 统一异常处理 Java Bean Validation...

    maven window下安装包

    第12章:编写自定义插件/12.4 使用自定义插件/12.4.1 在新建的Maven项目中引用自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.2 测试自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.3 ...

    ASP.NET.4揭秘 卷2

    n431 使用缓存后替换 n432 用户控件缓存 n433 共享用户控件的输出缓存 n434 以编程方式处理用户控件缓存 n435 创建用户控件缓存的文件依赖 n436 缓存动态载入的用户控件 n44 使用数据源缓存 n441 使用绝对缓存过期...

    vue-form-create:基于Vue3.0的表单设计器

    vue-form-create基于 Vue3.0 + TS 的自定义...$ npm install vue-form-create --save$ yarn add vue-form-create浏览器引入在浏览器中使用 script 标签直接引入文件,并使用全局变量 formCreate。我们在 npm 发布包内

    ant学习打包代码

    --引用自定标签的name myTaskExample--&gt; &lt;!--用echo显示各种的属性--&gt; 当前系统的用户名:${user.name}" /&gt; 当前系统的版本:${os.version}" /&gt; 当前系统的安装路径:${user.home}" /&gt; 的xml文件:${...

    ASP.NET 网页抓取WEB版

    三、“抓取信息标签”是指列表后页面中要制定抓取的信息容器型标签。(如果抓取整页信息请为空),然后点 击“开始抓取列表内容”。 四、当抓取记录操作中出现抓取日志时。网页HTML字符串已经保存完毕。可是图片可能...

    luda:一个库有助于构建跨框架的UI组件

    模板解析后,Luda参与了该过程,并将诸如数据绑定和自定义标签打包之类的解析工作留给了faviroute框架。 这样,无论在前端框架还是后端框架中,您都可以以最大的灵活性打包可重用的Luda组件。 在了解有关Luda的更多...

    ASP.NET网页抓取功能

    三、“抓取信息标签”是指列表后页面中要制定抓取的信息容器型标签。(如果抓取整页信息请为空),然后点 击“开始抓取列表内容”。 四、当抓取记录操作中出现抓取日志时。网页HTML字符串已经保存完毕。可是图片可能...

    Joomla实用插件打包

    Joomla插件包括:google分析插件、Joomla google 天气预报模块、Joomla 幻灯播放、Joomla 标签卡片式插件、Joomla多语言支持、lightbox照片展示、thickbox插件、广告栏淡入淡出、登录、自定义模板_应用_QQ在线咨询、...

Global site tag (gtag.js) - Google Analytics