闲来无事,打开O'Reilly那本Servlets and JSP来看看。因进来对JSTL有点疑问,所以直接去到第九章:Custom tags are powerful: using JSTL。但是,这里记录的是我认为自己比较需要记住或注意的点,所以会比较散一点。
1.用c:out的default属性设置默认值:<b>Hello <c:out value='${user}' default='guest' />.<b>,这里当value里的user为null时,就会输出【Hello guest】.
还有另一种做法就是:<b>Hello <c:out value=’${user}’>guest</c:out></b>
2.包含指令如<%@ include file=”Header.html” %>,在JSP转换为Servlet时就将包含的页面内容添加进当前页面;而标准动作(standard action)里的<jsp:include>,是在用户请求当前页面时,才将被包含页面的内容添加进来;<c:import>这个JSTL标签,与<jsp:include>一样,都是用户请求当前页面时,才将被包含的页面内容添加,但是该标签更powerful和flexiable一点,例如你可用这个标签添加【不在当前应用的】其他应用的页面内容,
3.自定义被包含页面的部分内容
有这么个应用场景:有个页面被多个页面包含,例如你应用里的header.jsp,但header.jsp里有些内容你想不同包含页面由不同的展示,那你可以这么干(例子来自上述书本):
包含 '<jsp:include>'的页面:
<html>
<body>
<jsp:include page="Header.jsp">
<jsp:param name="subTitle" value="We take the sting out of SOAP." />
</jsp:include>
<br>
<em>Welcome to our Web Services Support Group.</em> <br><br>
Contact us at: ${initParam.mainEmail}
</body>
</html>
被包含的文件("Header.jsp"):
<img src="images/Web-Services.jpg" > <br>
<em><strong>${param.subTitle}</strong></em>
<br>
4.怎样在JSP实现回话追踪(URL Rewriting)呢?
假设你的JSP页面含有<a>标签,怎样实现回话追踪呢?当用户没有disable浏览器cookie的时候,这其实是自动发生的,也就是会话追踪是由服务器实现了。但,如果用户disable了cookie呢,这时候我们自然想到url rewriting,即URL重写,把jsessionid添加到a标签的url后面,这时候,我们需要使用【<c:url>】标签,像这样:
<a href="<c:url value='/inputComments.jsp' />">Click here</a>
对比:在servlet里面,我们使用HttpServletResponse.encodeURL(String url)来实现URL重写。
5.如何在JSP实现URL Encoding呢?
假设JSP里有个URL是Http GET 请求,且URL里含有query string,即请求参数,像这样:
<c:set var="last" value="Hidden Cursor" />
<c:set var="first” value="Crouching Pixels"/>
<c:url value="/inputComments.jsp?first=${first}&last=${last}" var="inputURL" />
可以看到query string里含有空格这样的unsafe字符,这样的GET请求会工作得不正常。我们知道,URL经常需要【被转码/编码(encoded)】,术语:URL encoding,即用其他字符替换unsafe/reserved的字符,然后GET请求到达服务器时,这些参数会被decoded,即解码。例如空格会被转换为"+"。
这时,用一个标签来实现url encoding:<c:param>,像这样:
<c:url value="/inputComments.jsp" var="inputURL" >
<c:param name="firstName” value=”${first}" />
<c:param name="lastName" value="${last}" />
</c:url>
即,将URL后面接的参数用c:param标签添加,即可实现url encoding。
6.开发自定义tag时,要做的事:
(1)编写tld,即标签描述文件;该文件可以并仅可以放置在你web应用的【WEB-INF】下的4个位置:1)就直接放在WEB-INF下;2)新建一个名为'tlds'文件夹,将所有tld放在这里;3)如果你开发的标签是单独作为一个jar,即单独一个模块,那你得将你的tld放在jar的META-INF里;4)在上述3的情况下,在META-INF里新建一个名为'moreTLDSs'的文件夹,然后放在这里面。
(2)编写一个Tag Handler,该handler继承自SimpleTagSupport(来自javax.servlet.jsp.tagext);
(3)在JSP2.0之前,你得在DD里做类似这样的配置:
<jsp-config>
<taglib>
<taglib-uri>randomThings</taglib-uri>
<taglib-location>/WEB-INF/myFunctions.tld</taglib-location>
</taglib>
</jsp-config>
这样来告诉Servlet Container去map a taglib uri to a tld file,当你在你的JSP页面引用<%@ taglib prefix=”mine” uri=”randomThings”%>。
但是,在JSP2.0之后,服务器会帮你自动做这样的mapping,即你不再需要配置<taglib>在DD里了。
值得注意的是:
这里的uri只是一个name,不是一个location。
好了,暂时先写到这里,后续继续更新,作为学习笔记,还可作为资料来查。
分享到:
相关推荐
**JSTL(JavaServer Pages Standard Tag Library)**是一个标准化的、开源的JSP标签库,旨在简化JSP页面的开发。它由Apache Jakarta小组维护,最初是为了减少JSP页面中自定义标签的重复定义而设计。JSTL 1.02是其...
### EL (Expression Language) 和 JSTL (JavaServer Pages Standard Tag Library) 学习笔记 #### 1. EL 表达式概述 - **EL 表达式的引入**:自 JSP 2.0 以来,EL 表达式成为官方规范的一部分,在 Servlet 2.4 及...
**JSTL标签详解** JavaServer Pages Standard Tag Library (JSTL) 是一套标准的标签库,用于简化JSP页面的编程,使得开发者能够使用标签而不是脚本来处理常见任务。在JSTL中,`EL(Expression Language)`是用于...
`JSTL笔记.txt`可能包含了学习者在实践中遇到的问题、解决方案以及一些实用技巧。这是一份宝贵的资源,可以作为学习JSTL的辅助材料。 总结,JSTL通过提供一系列标签和表达式语言,大大简化了JSP页面的编写,提高了...
通过深入学习和实践《Ognl_JSTL_学习笔记.doc》,开发者可以熟练掌握这两种技术,提高在Java Web开发中的效率和代码质量。在实际工作中,理解并灵活运用Ognl和JSTL,能够更好地设计和实现交互丰富的Web应用。
**JSTL(JavaServer Pages Standard Tag Library)详解** JSTL是JavaServer Pages标准标签库,它提供了一组预定义的标签,用于简化JSP页面的开发,使其更加结构化,可读性更强,同时也提高了代码的复用性和可维护性...
根据提供的文件信息,本文将详细解析JSTL(JavaServer Pages Standard Tag Library)中的两个核心标签:`<c:forEach>` 和 `<c:set>` 的使用...通过对这些标签的学习与实践,可以显著提高Web应用程序的开发效率和质量。
### JSTL与EL:深度解析与学习指南 在探讨JSTL(JavaServer Pages Standard Tag Library)与EL(Expression Language)之前,我们先来理解它们在Java Web开发中的核心地位。JSTL与EL是Java Web应用开发中不可或缺的...
EL&JSTL笔记学习笔记
**JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它为JSP...JSTL的学习笔记对于Java开发爱好者来说是一份宝贵的参考资料,可以帮助他们快速掌握JSTL的用法并应用于实际项目中。
总结起来,这个压缩包提供了全面的JSTL和EL的学习资源,不仅有详细的文档,还有实际可用的库文件,对于初学者或经验丰富的开发者来说,都是宝贵的参考资料。通过深入理解和熟练运用这些知识点,可以提升JSP页面的...
《JSP & Servlet学习笔记(第2版)》涵盖了文本处理、图片验证、自动登录、验证过滤器、压缩处理、JSTL应用与操作等各种实用范例。 《JSP & Servlet学习笔记(第2版)》以“微博”项目贯穿全书,将JSP & Servlet技术应用...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
本学习笔记将深入探讨这两个概念,以及它们如何协同工作以提供高效、灵活的Web服务。** **JSP简介:** JSP是一种服务器端的脚本语言,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现动态内容的生成。JSP文件...
【Java学习笔记全套】是针对Java编程语言的一套全面学习资料,涵盖了Unix操作系统基础、SQL数据库操作、核心Java编程、Hibernate持久化框架、以及Spring框架等多个关键知识点。这些笔记旨在帮助初学者系统地掌握Java...
标题“jstl标签帮助文档”和描述表明,这份文档是一份关于JSP页面标签库中常用标签的详细帮助文档,并附有学习笔记。文档是英文版的,可以推断它是对JavaServer Pages™ Standard Tag Library (JSTL) 的详细介绍。 ...
【Java学习笔记、SSH学习笔记】是一份涵盖了Java Web开发中的关键技术和框架的资源集合,主要涉及了JSP(JavaServer Pages)、JSTL(JavaServer Pages Standard Tag Library)、EL(Expression Language)以及SSH...
本篇web学习笔记将深入探讨EL的基本概念、语法和应用场景。 首先,EL表达式是用在JSP页面或其他Java EE组件中的一种特殊语法,其基本形式为`${expression}`。这里的`expression`可以是Java对象、属性、方法调用等。...