自定义封装JSTL标签与EL函数表达式

自定义JSTL标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web Container调用那些操作。

JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。

你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。

 

要创建自定义的JSP标签,你首先必须创建处理标签的Java类。所以,让我们创建一个Myjstl类,如下所示:

 

package com.inba.maya.filter;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class MyJstl extends SimpleTagSupport {
    
    private String userName;
    
    public void setUserName(String userName) {
        this.userName = userName;
    }    
    @Override
    public void doTag() throws JspException, IOException {
        Object obj=this.getJspContext().getAttribute(userName,PageContext.SESSION_SCOPE);        
        if(obj == null){
            this.getJspContext().getOut().write("登录 | 注册");
        }else{
            this.getJspContext().getOut().write("欢迎你"+obj.toString());
        }
    }

    
}

配置tld文件,在WEB-INF\下建立tld文件

 

 

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
  <description>JSTL 1.1 core library</description>
  <display-name>JSTL core</display-name>
  <tlib-version>1.1</tlib-version> <!-- 版本号 -->
  <short-name>m</short-name> <!-- 标签的指向名例如标准标签库中的c -->
  <uri>com.inba.maya.myjstl</uri> <!-- 唯一路径 -->
  
  <tag>
    <description>
        Catches any Throwable that occurs in its body and optionally
        exposes it.
    </description>
    <!-- 标签名 -->
    <name>user</name> 
    <tag-class>com.inba.maya.filter.MyJstl</tag-class> <!-- 完整类名 -->
    <body-content>scriptless</body-content> <!-- 不可让用户随便乱写 -->
    <!-- 标签属性 -->
    <attribute>
        <description>
            描述
        </description>
        <name>userName</name> <!-- 属性名 -->
        <required>false</required> <!-- 是否是必填的属性 -->
        <rtexprvalue>false</rtexprvalue> <!-- 是否可用EL表达式 -->
    </attribute>
  </tag>
  
  </taglib>

接下来,我们就可以在JSP文件中使用user标签:

 

自定义EL函数表达式

配置tlid文件

创建类:

package com.inba.maya.util;

public class MyElUtil {
    
    //EL方法的封装
    public static String transer(String txt, String cssClass){
        txt=txt.replaceAll("&", "&amp;")
                .replaceAll("<", "&lt;")
                .replaceAll(">", "&gt;")
                .replaceAll("\n","</p><p>")
                .replaceAll("\'", "&#039;")
                .replaceAll("\"", "&#034;");        
        txt="<p class="+cssClass+">"+txt+"</p>";        
        return txt;
    }
}

使用EL标签

 

转载于:https://www.cnblogs.com/AnswerTheQuestion/p/6390064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值