jsp的自定义标签 控制jsp内容显示
引入方式示例
<%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %>
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;// abc.do @Override
public int doStartTag() throws JspException { // 在标签开始处出发该方法 HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();
//获取session中存放的权限 //判断是否有权限访问
if (PermissionInterceptor.isOperCanAccess(request, link)) {
//允许访问标签body
return BodyTagSupport.EVAL_BODY_INCLUDE;// 返回此则执行标签body中内容,SKIP_BODY则不执行
} else {
return BodyTagSupport.SKIP_BODY;
} } @Override
public 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>
link=abc.do直接传入
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;
//标签属性操作url
private 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 block
e1.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改为调用js
if(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的自定义标签 控制jsp内容显示的更多相关文章
- Servlet------>jsp自定义标签3(不显示余下jsp内容)
2.自定义标签控制,jsp页面余下标签是否继续执行 EndTag.java package tag; import javax.servlet.jsp.JspException; import jav ...
- jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题 之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一 ...
- Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示
本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java. ...
- 12、Jsp加强/自定义标签/JavaBean
1 Jsp加强回顾 Jsp加强 1)Jsp的9大内置对象 request HttpServletRequet response HttpServletResponse config ...
- [Java] JSP笔记 - 自定义标签
自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...
- JavaWeb之 JSP:自定义标签
当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 自定义标签 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的 ...
- JavaWeb之 JSP:自定义标签的创建和使用
当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的java类, ...
- jsp的自定义标签
1.相对于JSTL或Spring等第三方标签库而言的,用来实现项目中特定的功能需求. 2.自定义标签基本的组成部分 ①页面上看得见的部分 [1]通过taglib引入标签库 [2]标签本身 ②xxx.t ...
- Servlet和JSP之自定义标签学习
此文章会讲述简单标签处理器,因为经典自定义标签处理器没有简单标签处理器方便使用,故在此不进行描述. 参考:慕课网的<JSP自定义标签>视频; <Servlet.JSP和Sprin ...
随机推荐
- sublimeText3插件安装
1,官方下载sublimeText 3(百度搜索) 2,安装成功后按Ctrl+`调出console 3,然后输入 import urllib.request,os; pf = 'Package Con ...
- jquery处理checkbox(复选框)是否被选中
现在如果一个复选框被选中,是用checked=true,checked="checked"也行 要用prop代替attr会更好,虽然在jQuery1.6之前版本的attr()方法能 ...
- 《c#入门经典第五版》简介及pdf电子书网盘下载地址(收藏)
<C#入门经典(第5版)>全面讲解C# 2010和.net架构编程知识,为您编写卓越C# 2010程序奠定坚实基础.C#入门经典系列是屡获殊荣的C#名著和超级畅销书.最新版的<C#入 ...
- 找到一个新的超好用的U盘启动制作工具了
有同事叫帮装电脑,弄个U盘说制作一个启动盘,结果一搜,出了“雨林木风”的主页. 太好用了,高手的产物,比以前找的方便一百倍.又简单,又实用,同步又下载好GHO文件.唯一 的问题是XP中用的GHO,好多 ...
- Spring+IOC(DI)+AOP概念及优缺点
Spring pring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应 ...
- 使用vue-cli构建多页面应用+vux(一)
众所皆知,vue对于构建单页面应该相当方便,但是在项目中难免遇到有多个页面的情况. 1.先安装vue-cli脚手架,具体步骤看vue-cli的官方github地址 https://github.com ...
- ajax的介绍
$.ajax({ 11 url: "article.asmx/GetArticleByID", 12 type: "POST", 13 datatype: &q ...
- 用vuejs仿网易云音乐(实现听歌以及搜索功能)
前言 前端时间学了vue,一开始看了vue1.0,后来实在觉得技术总得实践,就直接上手vue2.0.然后花了将近一周时间做了一个网易云音乐的小项目.一开始觉得项目比较小,没必要用vuex所以就没有使用 ...
- Linux 基础(2)
Linux 基础(二) 用户 组 及权限的相关操作 一.useradd命令选项:–u:指定用户的UID useradd –u 100 mu #指定mu的UID为100–g:指定用户所属的群组 user ...
- Vmware Vsphere WebService之vijava 开发一-vcenter连接、及集群信息获取
开始是通过java代码调用vsphere提供的原始接口,从而控制vcenter的操作.当第一个版本做完之后发现代码执行的速度特别慢,后来在网上看到有人用vijava(对vsphere原始接口封装)编程 ...