2阶——jsp EL 与 自定义标签

 

 EL表达式

   ${pageContext.request.contextPath}

         5.1 EL作用(替代 <%= %>

 

语法:

 

                   ${变量}

                   3.1 输出普通字符串: ${name}

                   3.2 输出对象属性:  ${student.name}  注意: .name 相当于  .getName()方法

                   3.3 输出List集合:   ${list[0].name }   注意: [0]  相当于 get(下标)方法

                   3.4 输出map集合:  ${map[key].name}  注意: [key]相当于getkey)方法

                             例如:session.setattrbue(“mp”,map)   ${mp.gender}   或者 ${mp["gender"]}     格式 ${域对象中的键.map中的键}

 

 

 

                   EL表达式作用:向浏览器输出域对象中的变量值或表达式计算的结果!!!

 

 

 

                   语法: ${变量或表达式}

 

  

2 自定义标签

2.2 第一个自定义标签开发步骤

                            1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类

 

核心代码PageContext pageContext = (PageContext)this.getJspContext();
HttpServletRequest request =(HttpServletRequest) pageContext.getRequest();

                                    

 

2)在web项目的WEB-INF目录下建立itcast.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的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">

  <!-- 标签库的版本 -->

  <tlib-version>1.1</tlib-version>

  <!-- 标签库前缀 -->

  <short-name>itcast</short-name>

  <!-- tld文件的唯一标记 -->

  <uri>http://gz.itcast.cn</uri>

  <!-- 一个标签的声明 -->

  <tag>

    <!-- 标签名称 -->

    <name>showIp</name>

    <!-- 标签处理器类的全名 -->

    <tag-class>gz.itcast.a_tag.ShowIpTag</tag-class>

    <!-- 输出标签体内容格式 -->

    <body-content>scriptless</body-content>

  </tag>

</taglib>

 

                  

3)在jsp页面的头部导入自定义标签库

                                         <%@taglib uri="http://gz.itcast.cn" prefix="itcast"%>

 

                   4)在jsp中使用自定义标签

                                               <itcast:showIp></itcast:showIp>

 

 

 

 

 

 

2.4 自定义标签处理器类的生命周期

                            SimpleTag接口:

                                     void          setJspContext(JspContext pc)  --设置pageContext对象,传入pageContext(一定调用)通过getJspCotext()方法得到pageContext对象

 

                                     void          setParent(JspTag parent)  --设置父标签对象,传入父标签对象,如果没有父标签,则不用此方法。通过getParent()方法得到父标签对象。

 

                                     void     setXXX()             --设置属性值。

                                     void          setJspBody(JspFragment jspBody) --设置标签体内容。标签体内容封装到JspFragment对象中,然后传入JspFragment对象。通过getJspBody()方法得到标签体内容。如果没有标签体内容,则不会调用此方法

 

                                     void          doTag() --执行标签时调用的方法。(一定调用)

     2.5 自定义标签的作用

                            1)控制标签体内容是否输出

                            This.getjspbody().invoke(null) 可以输出标签体的内容

                            2)控制标签余下内容是否输出

                            Throw new SkipPageException();

                            3)控制重复输出标签体内容

             For循环控制输出的次数

                            4)改变标签体内容

                            StringWriter sw = new StringWriter();

                            This.getJspbody().invoke(sw);

                            String str = Sw.tostring();  取出标签体的内容

                            String Str3 = Str.tolowerCase() 改变标签体的内容

                            This.getjspcontext().getout().writer(str3) 输出新的标签体内容

 

坚持
原文地址:https://www.cnblogs.com/gaoSJ/p/12928765.html