第二十八天:总结

1.传统标签
    a.自定义标签:
        用户自定义的一种jsp标记 。当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,
        tag标签被转化成了对一个称为 标签处理类 的对象的操作。于是,当jsp页面被jsp引擎转化为servlet后,
        实际上tag标签被转化为了对tag处理类的操作。   
        Tag接口:定义了JSP页面与标签处理器类之间的通信规则
       
    b.自定义标签的功能:是否执行标签体内容
                                            是否重复执行标签体内容
                                            是否修改标签体部分的执行结果后再输出
                                            是否忽略JSP页面中标签后面的内容
                                           
    c.执行顺序:实例化
                            setPageContext
                            setParent
                            setters
                            doStartTag
                            doEndTag
                            release    被垃圾回收器回收之前调用release   
                           
    d.案例:防盗链,传入属性       
      String referrer = request.getHeader("referer");    //得到来访者是通过哪个超链接点击过来的                           
      String sitePath = "http://"+request.getServeltName();//得到当前应用的名称
      通过超链接访问,referer有值,
        直接在浏览器中输入地址,referer为null
        通过Servlet跳转,重定向了?
       
        在tld中描述标签属性:<attribute>
                                                 name         //属性的名字
                                                 required     //是否是必须的
                                                 rtexprvalue    //是否可以放$等  运行时表达式
                                                 
    e.案例:<c:if test=""></c>
      属性值可以是各种类型,不一定就是string
        如结合${} 可以是boolean ,int 等
       
    f.案例:<jsp:useBean ></jsp:useBean>
      通过反射,new一个实例,将这个对象设置到域中
                                     
                                                 
       
2.简单标签
  a.主要方法:
          setJspContext  JspContext是pageContext的父类
            setParent    嵌套用的
            getParent
            setJspBody  将标签体封装成JspFragment对象传递给标签处理器对象
                                在传统标签中,是通过doStartTag 或 doEndTag的return this.XXX返回值来决定是否执行
                                那么JspFragment 一定有执行或不执行的方法
            doTag
                    标签体:输出,迭代,修改
                        标签后面的内容:doTag中抛异常   余下的JSP代码就不执行了,throw new SkipPageException(...)
                       
  b.执行顺序:
          setJspContext 将代表JSP的pageContext对象传递过去
          setParent 有父标签就调用这个方法
          setters 设置属性
          setJspBody 将标签体封装成一个JspFragment对象,传递给这个方法,如果标签体为空就不调用这个方法
          doTag
         
  c.JspFragment
          不能包含JSP脚本代码(Java代码),scripless
          getJspContext
          invoke(Writer out)
            如果没有调用JspFragment.invoke 忽略
            重复调用   迭代
            写到容器   修改
           
  d.案例:<c:forEach var="" items=""></c>
          将数据放到JspContext域中 键和值:键是var
            由于JspContext是那个页面的
           
  e.案例:修改标签体
                  <c:htmlFilter>
                       <c:readFile file="" />
                    </c:htmlFilter>
        浏览器看到<>就解析了,所有我们就将<>转义       
           

3.JSTL标签库
    1)核心标签库
        <c:out>
        <c:set>
        <c:remove>
        <c:catch>
        <c:if>
        <c:choose>
        <c:forEach>
        <c:param>
        <c:url>
        <c:redirect>   
    2)国际化标签
    3)JSTL函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值