jsp的自定义标签
[1]通过taglib引入标签库[2]标签本身
<description>Atguigu 1.0 core library</description>
<display-name>Atguigu core</display-name>
<tlib-version>1.0</tlib-version>
<short-name>atguigu</short-name>
<uri>http://www.atguigu.com/survey/tag</uri>
[3]注册自定义标签处理器类
<tag>
<!-- 标签名 -->
<name>showTime</name> <!-- 标签全类名 -->
<tag-class>com.atguigu.myTag.TagShowTime</tag-class> <!-- 设置标签体为空 -->
<body-content>empty</body-content>
</tag>
<!-- 声明标签的属性 -->
<attribute>
<!-- 属性名 -->
<name>format</name> <!-- 属性是否必须 -->
<required>true</required> <!-- 属性是否支持EL表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
①标签体需要执行<!-- EL表达式→Java代码→编译→执行→页面上可以显示的结果 -->
<!-- HTML标签或普通文本→out.print(xxx)→执行→页面上可以显示的结果 -->
public class AuthTag extends SimpleTagSupport {
private String servletPath;
@Override
public void doTag() throws JspException, IOException {
//获取页面的上下文对象
PageContext context = (PageContext) getJspContext();
HttpSession session = context.getSession();
Admin admin = (Admin)session.getAttribute(GlobalNames.LOGIN_ADMIN);
if(admin!=null){
//判断是否有权限访问
String adminName = admin.getAdminName();
if("admin".equals(adminName)){
//显示内容体
getJspBody().invoke(null);
return ;
} ServletContext servletContext = context.getServletContext();
WebApplicationContext ioc = WebApplicationContextUtils.getWebApplicationContext(servletContext);
//用servletPath查询资源数据
ResMapper resMapper = (ResMapper) ioc.getBean(ResMapper.class);
Res res = resMapper.getResByServletPath(servletPath);
System.out.println("servletPath.......... "+servletPath);
String codeArr= admin.getCodeArr();
Integer resCode =res.getResCode();
Integer resPos=res.getResPos();
//计算验证资源是否可以访问
boolean authority = DataprocessUtils.checkAuthority(resCode, resPos, codeArr);
if(authority){
//显示内容体
getJspBody().invoke(null);
return ;
}
}
//上面的条件如果有任何一个不满足,那么就不执行标签体,页面上将不显示标签体
}
public void setServletPath(String servletPath) {
//为了保持与数据库一致,需要加上“/”
this.servletPath = "/"+servletPath;
}
}
jsp的自定义标签的更多相关文章
- [Java] JSP笔记 - 自定义标签
自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...
- 【JSP】自定义标签开发入门
JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...
- 12、Jsp加强/自定义标签/JavaBean
1 Jsp加强回顾 Jsp加强 1)Jsp的9大内置对象 request HttpServletRequet response HttpServletResponse config ...
- Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示
本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java. ...
- JavaWeb之 JSP:自定义标签
当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 自定义标签 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的 ...
- JavaWeb之 JSP:自定义标签的创建和使用
当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的java类, ...
- Servlet和JSP之自定义标签学习
此文章会讲述简单标签处理器,因为经典自定义标签处理器没有简单标签处理器方便使用,故在此不进行描述. 参考:慕课网的<JSP自定义标签>视频; <Servlet.JSP和Sprin ...
- jsp的自定义标签 控制jsp内容显示
引入方式示例 <%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> tld文件 <?x ...
- jsp里面自定义标签常量详解
标签中静态常量: EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流 SKIP_BODY:告诉服务器不要处理正文内容 EVAL_PAGE:让服务器继续执行页面 SKIP_ ...
随机推荐
- Redis的安装和Jedis的使用
Redis的安装和学习资料 Redis的安装可以参考 https://www.cnblogs.com/dddyyy/p/9763098.html Redis的学习可以参考https://www.cnb ...
- [原创]Javascript模拟“类”的综合实现方式以及部分细节【截至ES6】
[原创]Javascript模拟“类”的综合实现方式以及部分细节[截至ES6] 前言 最近几个旧项目里使用的图片编辑插件出现Bug, 经Review 后确定需要在其内外均做些改动,但是头疼的发现部 ...
- golang xorm框架的使用
1.创建engine engine, err := xorm.NewEngine(driverName, dataSourceName) 上述代码创建了一个数据库引擎,可以在一个程序中创建多个engi ...
- Scrapy运行流程
接下来的图表展现了Scrapy的架构,包括组件及在系统中发生的数据流的概览(绿色箭头所示). 下面对每个组件都做了简单介绍,并给出了详细内容的链接.数据流如下所描述. 来源于https://scrap ...
- 基于Redis实现的抢购代码示例
示例代码是基于博客 https://blog.csdn.net/qq1013598664/article/details/70183908的错误案例修改而来,如果有问题望多多指点,错误代码可以去原文查 ...
- 【转】字符编码笔记:ASCII、Unicode、UTF-8 和 Base64
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一 ...
- metamask源码学习-controllers-network
https://github.com/MetaMask/metamask-extension/tree/master/app/scripts/controllers/network metamask- ...
- day16 Python map函数
num_l=[1,2,10,5,3,7] #lambda x:x+1 # def add_one(x): # return x+1 #lambda x:x+1 # def reduce_one(x): ...
- TLAB
TLAB的全称是Thread Local Allocation Buffer,即线程本地分配缓存区,这是一个线程专用的内存分配区域. 由于对象一般会分配在堆上,而堆是全局共享的.因此在同一时间,可能会 ...
- 编程实现类似Linux下cp功能
MyCP的代码实现 一.题目要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bi ...