JSTL 又称JSP标准标签库 有apache的 jarkata小组开发 同EL表达式目的一样都是为了 将复杂的jsp代码 以标签的形式 显示出来
我们在使用JSTL就要下载jstl.jar 和 standard.jar文件 ,要想tomcat 和 我们的Eclipse 都支持 JSTL那么就要 分别将2个jar 部署到
tomcat的lib目录下 ,以及将这两个jar 添加到我们项目的 BuildPath中去。
添加到BuildPath是为了 我们在Eclipse开发的时候 可以使用JSTL ,将jar部署到tomcat下是为了使tomcat支持处理jstl 。
jstl的jar文件的下载地址 :http://tomcat.apache.org/taglibs/standard/
jstl的参考文档地址 http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/
1、<c:set></c:set>标签对的使用。
我们可以再 application page request session 的范围内使用jstl添加属性 。
如下 <c:set var="num" value="10" scope="page"/> 没有body的形式
<c:set var="num" scope="page">10</c:set> 带body的形式 都可以对属性进行设置值
2、我们还可以为一个java.util.Map对象或者 一个javaBean设置属性的值 。对于 Map来说如果属性不存在那么就会添加一个属性
javaBean如果类型不匹配那么 会自动进行强制转换,如果转换失败那么就会抛出JSPException 异常 。
<c:set target="${bean}" property="width">100</c:set> 这是将一个bean对象的width属性设置 100
<c:set target="${bean}" property="width" value="100"/> 这个同上只是没有body 。
我们要注意的一点是,target是JavaBean对象的名字 ,我们一定要利用EL表达式 "${bean}"进行转换后再赋值 ,不可以 直接"bean",否则出错 。 在jsp动作指令中没这个规矩。 还要注意的一点是使用<c:set></c:set>包标签对的用户 设置javaBean时候要设置的那
个属性 必须要有setXxx()的方法 。
总之我们在书写javaBean的时候一定要规范javaBean的格式 ,因为这样有助于JSP引擎来知道javaBean 。我们还以使用内省的方式
来操作JavaBean 。
如果有一个JavaBean为 bean ,并且我们将这个javaBean 设置为了 request.setAttribute("bean",bean);
那么如下语句将是true
<%
out.print((bean==request.getAttrubute("bean")));
%>
3、<c:remove var="属性名" scope="{page|application|request|session}"/> 是删除指定范围内的一个属性。
如果我们不指定范围那么JSP引擎会自动搜索 该名称的属性。
4、<c:out value="" escapeXml="{true|false}">默认的值</c:out>
<c:out value="" escapeXml="{true|false}" defaule=""/>
这两种结果是一样的 escapeXml为true的时候可以输出特殊字符 。 例如&<>"'等等
对于属性的输出一定要利用EL表达式 转换成字符串 。"${var}" 然后在赋值给value
注意的一点是 :
如果我们输出的属性不存在 或者null 那么将输出默认值 如下 :
<c:set var="num"> 10</c:set>
<c:remove var="num"/>
<c:out var="num" >属性不存在 </c:out>
结果会显示 属性不存在 。。。 <c:remove></c:remove>相当于调用了pageContext.removeAttribute() ;
pageContextg是javax.servlet.jsp.PageContext 的实例 代表了 jsp上下文 、环境。
5、<c:catch></c:catch>进行异常捕获
<c:catch var="error">
<%=3/0%>
</c:catch>
<c:out var="${error}"/>
这样就捕获了异常。。。