第二十八天:听课笔记

1.传统标签与简单标签:

2.Tag:
doStartTag  是否执行标签体
doEndTag    是否执行余下的JSP页面
setPageContext
setParent   嵌套形式
getParent   在doStartTag之前调用
release        可以用来释放资源,如数据库连接,不过JSP用数据库太恐怖了

3.先后顺序:
实例化
setPageContext
setParent
doStartTag
doEndTag
release    被垃圾回收器回收之前调用release

胡乱猜,不如去看源码,查文档

4.Tag 它孩子的实现:传统标签
SimpleTag 它孩子的实现:简单标签

IterationTag 迭代标签
BodyTag 修改标签体

5.Tag接口
定义了JSP页面与标签处理器类之间的通信规则

down一个JSP的规范

6.防止盗链:
String referer = request.getHeader("referer");  //得到你从哪个页面访问过来的
String sitePart = "http://"+request.getServerName();
referer != null && referer.startsWith(sitePart)

要是通过servlet访问了

通过超链接访问,referer有值,
直接在浏览器中输入地址,referer为null

7.属性
setter
在tld中描述标签的属性

setter是在doStartTag调用之前执行

<attribute>
name
required 是否是必须的
rtexprvalue 是否可以放$等  运行时表达式

<c:if test=""></c:if>

属性值可以是各种类型,不一定就是string
如结合${} 可以是boolean ,int 等

<jsp:useBean ></jsp:useBean >

<c: readfile>

8.IteratorTag

9.SimpleTag
setJspContext  JspContext是pageContext的父类
setParent    嵌套用的
getParent
setJspBody  将标签体封装成JspFragment对象传递给标签处理器对象
        在传统标签中,是通过doStartTag 或 doEndTag的return this.XXX返回值来决定是否执行
        那么JspFragment 一定有执行或不执行的方法
doTag
        输出,迭代,修改  标签体

10.JspFragment 这段JPS片度不能包含JSP脚本元素
getJspContext
public abstract void invoke(java.io.Writer out)
如果是response.getWriter 就写到浏览器
如果是我们定义的容器,就写到容器中

如果没有调用JspFragment.invoke 忽略
重复调用   迭代
写到容器   修改

11.
JspContext getJspContext
JspFragment  getJspBody
JspFragment.invoke

scriptless 无脚本的

doTag中抛异常   余下的JSP代码就不执行了
throw new SkipPageException(...)

12.迭代
<c:forEach var items>
每次迭代的时候,标签就取出当次迭代的数据

将数据放到JspContext域中 键和值:键是var
由于JspContext是那个页面的

13.修改标签体内容的标签

浏览器看到<>就解析了,所有我们就将<>转义

14.StringWriter
FileReader

XXXRead
XXXWriter
表示写到XXX  ,  除包装流以外

压栈

<c:htmlFilter>
   <c:readFile file="" />
</c:htmlFilter>

15.JSTL标签库:
核心标签库
国际化标签
数据库标签  不用学
XML        不用学
JSTL函数

16.
<c:out>
pageContext out
如果它是一个标签的子标签 输出到父标签中的流中

value escapeXml default

<c:set>
设置域中的属性
var value  scope target(往哪灌数据) property

<c:remove>
var scope

<c:catch>捕获异常
var 异常对象

<c:if>
test
var
scope

<c:choose>
if .... else
<c:choose>
  <c:when test="">
  </c:when>
  <c:otherwise>
  </c:otherwise>
</c:choose>

嵌套 if else if else

<c:forEach>
var items begin end step varStatus

<c:param>
设置/得到URL地址后面的参数
配合 url redirect

<c:url>

<c:redirect>

<c:import>


new 一个 往域里面放  name
EL 取得

fmt bundle 只在标签体有用
setBundle 都有用

fmt param 占位符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值