标签:mat ror 错误页面 tco sage 定义 布局 handler user
JSTL1.1不是JSP2.0规范的一部分,能访问servlet和JSP API并不意味着能访问JSTL。
使用JSTL之前,需要将jstl.jar文件安装到Web应用的WEB-INF/lib目录,即每个Web应用都需要JSTL的一个副本。
c:forEach标记还可以嵌套使用,如一个List中保存了若干数组,当遍历这些数组中的元素时…。
若对于一个评论页面,只有会员可以参与评论,非会员则只能浏览评论。
评论列表(commentList.jsp):
毕竟c:if没有else,虽然可以使用多个if应对,但是很难看,况且这样一来也没有一个默认的选择(即otherwise的作用)。
鉴于jsp:setProperty标记只能设置bean的性质,而JSTL的c:set可以对bean、Map、变量等多个性质赋值。
注意,当值计算为null,变量会被删除。如原先有一个名为Fido的变量属性,而${person.dog}计算为null,这个Fido属性就会被删除,即使不指定scope,也会按照顺序在页面作用域、请求作用域、会话作用域、上下文作用域中找到并删除这个Fido!
target必须计算为一个对象!而不是表示属性名的String直接量。
这意味着target需要一个EL表达式(如上)或者一个脚本表达式(<%= %>),或者jsp:attribute。
虽然c:set在值为null时可以删除属性,但是专门删除属性时用c:remove:
<%@ include file="Header.html"%>
一般是静态的布局模板,如html页面,故用file属性。 <jsp:include page="Header.jsp">
一般是JSP动态内容,故用page属性。<c:import url="http://www.google.com" />
这里是url属性。 JSP中会话跟踪是自动发生的(除非把session属性指定为session=”false”)。但是,当客户不支持cookie的时候,需要重写URL的方式增加会话ID到URL。
${inputURL}
DD 中的error-page是全局的,若某个JSP页面单独指定明确的errorPage page指令,那么容器就会优先使用page指令进行错误页面跳转。
若想要给用户提示错误信息时(通常不会提示这样的信息),则可以在错误页面中使用隐式对象exception:
一般的页面不会有隐式对象exception的,只有明确使用page指令中的isErrorPage=”ture”属性的页面才有此隐式对象。
想要使用定制库,那么必须阅读TLD。当然,这只是使用它,若开发定制库(即开发支持标记的Java代码),不是这里的任务。
注意rtexprvalue
tag/attribute/rtexprvalue节点很重要,因为它会告诉你属性的值是在转换时计算,还是在运行时计算。
若其值为false或未定义,那么属性值只能是一个String直接量,而不能是上图中的user=”${userName}”这种表达式!
rtexprvalue不只是针对EL表达式,可以使用如下几种方式:
标记体body-conten里能放什么
标记体body-conten中可以放如下值,只有当标记body-content元素值不是empty时,标记才能有体。
对于没有体的标记(即body-conten为empty),有3中调用方法(包括上述的attribute标准动作):
taglib中的uri,只是一个名字
上面的uri是randomThings,可知是一个名字。即使是uri=”http://java.sun.com/jsp/jstl/core”这种长串,也仅仅是一个名字,而不是一个位置。
tld文件的位置在哪里声明?
在JSP2.0之前,会在web.xml中有个taglib-location项,但是现在不需要了。容器会在4个位置查找TLD:
在WEB-INF/lib下的JAR文件中的META-INF目录的子目录中查找
当JSP使用了多个标记库
每个TLD要有一个单独的taglib指令;
确保taglib指令名是唯一的;
不要使用保留前缀如jsp/jspx/java/javax/serlvet/sun/sunw等
上面是如何使用advice定制标记的,那么现在稍微看看该标记的支持代码是怎么写的。
EL函数 vs 标记处理器
- 都是Java类
- 都需要放在WEB-INF/classes文件下的某个路径下
- 都要在TLD文件中进行映射
- EL函数在TLD中的映射是
- 标记处理器在TLD中的映射是
- EL函数可以定义任意名称的静态方法
- 标记处理器方法名必须是doTag()
《Head First Servlets & JSP》-9-使用JSTL
标签:mat ror 错误页面 tco sage 定义 布局 handler user
原文地址:http://www.cnblogs.com/myitroad/p/6192531.html