###1. 为什么要用自定义标签?
①Jsp中写代码比较混乱,难以维护
②把一些重复的功能都抽取出来,方便复用。
###2. 自定义标签分为几个步骤.
1.编写标签处理器类(SimpleTagSupport的实现类)
重写doTag()
2.编写标签库文件(WEB-INF/xxx.tld)
整个文件的定义: <short-name> <uri>
标签的定义: <tag>
3.在jsp页面使用标签:
导入标签库(xxx.tld/)
使用标签
###3. 自定义标签类要继承哪个类?
SimpleTagSupport类
sim·ple tag sə'pɔrt
###4. 怎么配置自定义标签的属性
在.tld文件<tag>标签中添加<attribute>,
通过<name>标签设定自定义标签的标签名。
###5. 为什么要用EL表达式,有什么好处
1.在页面中用js脚本和jsp表达式来获取数据显示比较麻烦
a:需要条件判断
b:可能需要强转
2.好处是EL表达式简单易用,默认可访问所有的JSP隐藏对象。
###6. EL表达式的语法是什么?
美元符号加大括号---> ${ EL表达式}
###7. EL有哪两种访问格式,有什么区别?
EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如. 或- 等并非字母或数字的符号,就一定要使用“[ ]“。
例如:
${ user. My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。
例如:
${er[data]}中data 是一个变量。
###8. EL表达式中有哪些隐藏对象,举几个例子?
pageContext : JSP页面的上下文
param : 参数
paramValues : 参数值
header : 头信息
headerValues : 头的值
cookie : 缓存
initParam : 初始化参数
###9. EL表达式中怎么样拿到request,session里面的值?
例:
可以通过它的隐藏对象RequestScope来获取到Request范围的属性名称所对应的值。
可以通过它的隐藏对象sessionScope来获取到session范围的属性名称所对应的值。
###10. EL表达式怎么样拿到用户请求的参数?
可以用${} 来获取用户请求的参数
###11. EL表达式怎么样得到上下文路径?
${pageContext.request.contextPath}
###12. EL表达式怎么样拿到request?
RequestScope
###13. JSTL全称是什么?
java服务器页面标准标签库
(JavaServer Pages Standard Tag Library)
###14. JSTL是怎么使用的?
将jstl.jar、standard.jar 复制到Tomcat 的WEB-INF\lib 中.
若要在JSP 网页中使用JSTL 时,一定要先做下面这行声明:
< %@ taglib prefix="c" uri="/jsp/jstl/core" %>
主要提供给Java Web 开发人员一个标准通用的标签函数库。
Web 程序开发人员能够利用JSTL 和EL 来开发Web 程序,
取代传统直接在页面上嵌入Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性。
###15. JSTL分为几个标签库?
①核心标签库
②国际化标签库
③数据库标签库
④XML标签库
⑤函数标签库
###16. JSTL里面判断标签是什么?
1. <c:if>
2. <c:choose>
<c:when></c:when>
<c:otherwise></c:otherwise>
</c:choose>
###17. JSTL里面的属性是否可以从EL表达式获取?
可以${xxxScope.attribute}
###18. JSTL里面的循环标签有几种,各是怎么用的?
1. <c:forEach> 用于迭代数字或集合;
2. <c:forTokens> 用于迭代字符串标记。
###19.怎么样得到循环标签里面的状态值,譬如index,count等?
在forEach循环标签中加入varStatus="s",然后直接用EL表达式:
<c:forEach items="${atts}" var="item" varStatus="s">
<c:if test="${st}">
------
</c:if>
index:${s.index}<br/>
count:${s.count}<br/>
first:${s.first}<br/>
last:${st}<br/>
${item}<br/><br/>
</c:forEach>。