jsp的自定义标签

1.相对于JSTL或Spring等第三方标签库而言的,用来实现项目中特定的功能需求。

2.自定义标签基本的组成部分

①页面上看得见的部分

[1]通过taglib引入标签库

[2]标签本身

②xxx.tld文件:用来注册标签处理器类

③标签处理器类

3.创建一个没有属性没有标签体的自定义标签

①创建自定义标签的处理器类

[1]标准要求:实现接口javax.servlet.jsp.tagext.SimpleTag

[2]实际操作:继承javax.servlet.jsp.tagext.SimpleTagSupport

[3]细节实现:重写doTag()方法

②在xxx.tld文件中注册这个标签处理器类

[1]xxx.tld文件需要放在WEB-INF目录下

[2]编写tld文件声明信息

<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>

③在页面上使用:和使用JSTL等第三方标签库没有区别

4.创建一个带属性的自定义标签

①创建自定义标签处理器类

②属性传入方式

[1]处理器类中提供和属性名对应的setXxx()方法

[2]在tld文件中注册这个属性名

<!-- 声明标签的属性 -->
<attribute>
     <!-- 属性名 -->
     <name>format</name>

     <!-- 属性是否必须 -->
     <required>true</required>

     <!-- 属性是否支持EL表达式 -->
     <rtexprvalue>true</rtexprvalue>
</attribute>

5.创建一个带有标签体的自定义标签

①标签体需要执行<!-- EL表达式→Java代码→编译→执行→页面上可以显示的结果 -->

<!-- 其他动态标签→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;
    }
}
时间: 2024-11-04 14:52:22

jsp的自定义标签的相关文章

Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示

本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.T

JavaWeb之 JSP:自定义标签

当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 自定义标签 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的java类,继承TagSupport类~ package com.vmaxtam.dotest; import javax.servlet.jsp.tagext.TagSupport; public class MyTagTest extends TagSupport { } 步骤二 重写父类的se

[Java] JSP笔记 - 自定义标签

自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现jsp代码. 接下来呢,我直接贴一些Demo代码: tagdatetag.tld  (标签声明 XML,将之方于 WEB-INF 目录中) <?xml version="1.0" encoding="UTF-8"?> <taglib xmlns=&quo

【JSP】自定义标签开放入门

JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作. JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面. JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记. 你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签 开发步

Servlet和JSP之自定义标签学习

  此文章会讲述简单标签处理器,因为经典自定义标签处理器没有简单标签处理器方便使用,故在此不进行描述. 参考:慕课网的<JSP自定义标签>视频; <Servlet.JSP和Spring MVC初学指南>的第六章; IBM的<利用 JSP 2 提供的 SimpleTagSupport 开发自定义标签>; 菜鸟教程的JSP自定义标签文章. 自定义标签   自定义标签 自定义标签就是将方法封装到自定义标签处理类中,然后使用方法与JSTL标签来达到,解决JSP中JavaBean

jsp里面自定义标签常量详解

标签中静态常量: EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流 SKIP_BODY:告诉服务器不要处理正文内容 EVAL_PAGE:让服务器继续执行页面 SKIP_PAGE:让服务器不要处理剩余的页面 EVAL_BODY_AGAIN:让服务器继续处理正文内容,只有doAfterBody方法可以返回 EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回 EVAL_BODY_INCLUDE.SKIP_BODY一般由doSt

JSP中自定义标签(结合easyui)——JSP中的TAG

使用了easyui的样式封装的下拉框标签: <%@ tag language="java" pageEncoding="utf-8"%> <%@ tag import="com.cseds.common.dic.DicHolder" %> <%@ tag import="com.cseds.common.dic.Dics" %> <%@ tag import="com.cse

JSP自定义标签开发入门《转》

JSP自定义标签开发入门 一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 目标1:自定义一个用表格显示用户信息的简单标签 效果图: 在jsp页面使用此自定义标签: 假设我们有一个UserInfo的javabean,那

JSP系列:(5)JSP进阶-自定义JSP标签

3.自定义标签 3.1.开发自定义标签的步骤 1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类 2)在web项目的WEB-INF目录下建立rk.tld文件,这个.tld文件叫标签库的声明文件.(参考核心标签库的tld文件) 3) 在jsp页面的头部导入自定义标签库:<%@taglib uri="http://www.lsieun.com/rk" prefix="rk"%> 4) 在jsp中使用自定义标签:<rk: