jsp tld 的tag 自定义标签扩展
引入方式
<%@ taglib prefix="bgt" uri="/WEB-INF/tlds/bgt.tld" %>
写法示例如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><taglib><tlib-version>1.0</tlib-version><jsp-version>2.0</jsp-version><short-name>bgt</short-name><!-- backGroundTag --><uri>http://www.sdyy.tag</uri><tag><name>hasUrlPerm</name><tag-class>com.sdyy.common.tags.HasUrlPermissionTag</tag-class><attribute><name>link</name><required>false</required><rtexprvalue>true</rtexprvalue><!-- 是否支持恶劣表达式 --><type>java.lang.String</type><description>示例:acApplication/forMain.do</description></attribute></tag></taglib>
A、【判断标签】HasUrlPermissionTag标签是一个判断标签,通过该标签来决定标签包裹的内容是否显示,写法如下:
package com.sdyy.common.tags;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.BodyTagSupport;import com.sdyy.common.spring.interceptor.PermissionInterceptor;/**** @ClassName: HasUrlPermissionTag* @Description: 根据url判断权限标签* @author: liuyx* @date: 2015年12月21日上午11:15:32*/public class HasUrlPermissionTag extends BodyTagSupport {private String link;// acApplication/forMain.do@Overridepublic int doStartTag() throws JspException { // 在标签开始处出发该方法HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();//获取session中存放的权限//判断是否有权限访问if (PermissionInterceptor.isOperCanAccess(request, link)) {//允许访问标签bodyreturn BodyTagSupport.EVAL_BODY_INCLUDE;// 返回此则执行标签body中内容,SKIP_BODY则不执行} else {return BodyTagSupport.SKIP_BODY;}}@Overridepublic int doEndTag() throws JspException {return BodyTagSupport.EVAL_BODY_INCLUDE;}public String getLink() {return link;}public void setLink(String link) {this.link = link;}}
在JSP中的使用方式:
<bgt:hasUrlPerm link="abc.do"><div>tttttttttttttttttest</div></bgt:hasUrlPerm>
B、【控件标签】,这种标签直接返回一个控件,不过是通过java代码生成的控件内容,写法示例:
package com.sdyy.common.tags;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.jsp.JspTagException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.BodyTagSupport;/*import com.sdyy.base.ac.ac_permission.model.AcPermission;*/public class ButtonUrlTag extends BodyTagSupport {private static final long serialVersionUID = -7811902545513255473L;//标签属性用户名private String user = null;//标签属性操作urlprivate String url = null;//标签属性 js方法private String jsmethod = null;//标签属性image 按钮图片private String image = null;//标签属性 alt 提示private String alt = null;//标签属性操作value 按钮文本private String value = null;/* 标签初始方法 */public int doStartTag() throws JspTagException{return super.EVAL_BODY_INCLUDE;}/* 标签结束方法 */public int doEndTag() throws JspTagException{pageContext.getSession();Boolean b = false;List list = new ArrayList();/*AcPermission p = new AcPermission();*//*JDBCHibernate jdbca = new JDBCHibernate();*/try {/*list = jdbca.getHaveURLByUsernameList(user);*/} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}for(int i = 0;i < list.size(); i++){/*p = (AcPermission) list.get(i);*/if(1==1) {//p.getUrl().trim().equals(url.trim())){b = true;//如果jsmethod属性不为null 则把超链接href改为调用jsif(jsmethod!=null){url = jsmethod;}}}JspWriter out = pageContext.getOut();if(b){try {//有权限 显示操作按钮out.println("<a href='" +url+ "' class='regular'><img src='" + image + "' alt='" + alt +"' />" + value + "</a>");} catch (IOException e) {e.printStackTrace();}}return super.SKIP_BODY;}/* 释放资源 */public void release(){super.release();}public String getUser() {return user;}public void setUser(String user) {this.user = user;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getImage() {return image;}public void setImage(String image) {this.image = image;}public String getAlt() {return alt;}public void setAlt(String alt) {this.alt = alt;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}public String getJsmethod() {return jsmethod;}public void setJsmethod(String jsmethod) {this.jsmethod = jsmethod;}}
jsp tld 的tag 自定义标签扩展的更多相关文章
- java:jsp: 一个简单的自定义标签 tld
java:jsp: 一个简单的自定义标签 tld 请注意,uri都是:http://www.tag.com/mytag,保持统一,要不然报错,不能访问 tld文件 <?xml version=& ...
- java:tag 自定义标签应用
一,tag类 1.1 TagMy标签类,格式化当前日期并输出 package com.dkt.tag; import java.io.IOException; import java.text.Sim ...
- jsp的三种自定义标签 写法示例
1.自定义方法标签 引入方式示例: <%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> 写 ...
- 在jsp页面中使用自定义标签
在某些场景中,自定义标签可封装大量代码,使页面变得更简洁,标签也可以很方便地在不同页面中实现通用而不必去粘贴大量的js代码.现在把最近做的一个自定义标签在这里总结一下.首先总结一下关于自定义标签的一些 ...
- JSP带有属性的自定义标签
新建HelloWelTag类 如何添加jsp-api.jar包 HelloWelTag类详细代码```package bid.zhazhapan.fims.tag;import java.io.IOE ...
- JSP自定义标签(标签处理器 tld文件)
标签的形式如下,标签处理器就是处理JSP页面中的标签的属性和内容,定义好之后就跟使用JSTL一样 <标签名 属性名="属性值" 属性名="属性值"> ...
- JSP自定义标签开发入门
一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发 ...
- 【JSP】自定义标签开发入门
JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...
- JSP自定义标签——传统标签
同JSP标签一样,自定义标签主要用于移除JSP页面中的Java代码,可以看到我们在JSP中其实是禁止使用Java脚本的,任何要想通过Java代码实现的功能都必须以标签形式来处理,可以使用JSP标签,J ...
随机推荐
- Selenium IDE 基础使用教程
Selenium IDE 基础使用教程 简介及安装 Selenium IDE 是一个易于使用的Firefox插件.它提供了一个图形用户界面,可进行脚本录制及导出.其记录的脚本可以被转换成多种编程语言( ...
- xss payload
xss payload可以使用富客户端文本书写,大多数用javascript,少部分用actionscript等等. 1.盗取cookie,发起cookie劫持 使用xss漏洞插入cookie.js ...
- 〔原创〕Ubuntu Linux Server 9.04 安装全程图解
关于Ubuntu Linux Server 9.04 版本的安装使用.先声明几点: 1. 整个安装过程,都是全英文的,而且,是文本模式,不像Desktop版本,有Livecd的图形化模式.2. 刚开始 ...
- 【java】Could not find or load main class
https://stackoverflow.com/questions/18093928/what-does-could-not-find-or-load-main-class-mean A comm ...
- VB 在Visio 2010 以编程方式创建子进程图
在2010年Visio以编程方式创建子进程图 Office 2010 https://msdn.microsoft.com/en-us/library/gg650651.aspx 简介: 学习如 ...
- CSS3实现的图片加载动画效果
来源:GBin1.com 使用CSS3实现的不同图片加载动画效果,支持响应式,非常适合针对瀑布流布局图片动态加载特效进行增强! HTML <ul class="grid effect- ...
- MyCAT学习总结
MyCAT介绍 简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务.ACID(指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一 ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何在同一台PC上运行多个TwinCAT程序
右击桌面右下角的TC2图标,切换到PLC Configuration,然后在Plc Settings中设置数量为4(TC2最多可以运行的数量是4个),然后点击Apply 可能需要输入登录用户名和密 ...
- poj 2253 (dis最短路径)
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24979 Accepted: 8114 Descript ...
- Unity 开发游戏编写代码的技巧
在平时开发游戏过程中,遇到一些编写代码很繁琐的问题. 我发现我团队中每个人都会遇到,就算打写出来分享下经验. 条件断点 利用IDE提供的工具, 右键断点的时候 输入条件, 当条件达成的时候,断点才能命 ...