闲来无事,打开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。
好了,暂时先写到这里,后续继续更新,作为学习笔记,还可作为资料来查。
分享到:
相关推荐
### 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)`是用于...
通过深入学习和实践《Ognl_JSTL_学习笔记.doc》,开发者可以熟练掌握这两种技术,提高在Java Web开发中的效率和代码质量。在实际工作中,理解并灵活运用Ognl和JSTL,能够更好地设计和实现交互丰富的Web应用。
**JSTL(JavaServer Pages Standard Tag Library)**是一个标准化的、开源的JSP标签库,旨在简化JSP页面的开发。它由Apache Jakarta小组维护,最初是为了减少JSP页面中自定义标签的重复定义而设计。JSTL 1.02是其...
### JSTL与EL:深度解析与学习指南 在探讨JSTL(JavaServer Pages Standard Tag Library)与EL(Expression Language)之前,我们先来理解它们在Java Web开发中的核心地位。JSTL与EL是Java Web应用开发中不可或缺的...
`JSTL笔记.txt`可能包含了学习者在实践中遇到的问题、解决方案以及一些实用技巧。这是一份宝贵的资源,可以作为学习JSTL的辅助材料。 总结,JSTL通过提供一系列标签和表达式语言,大大简化了JSP页面的编写,提高了...
JSP四大域对象和JSTL、EL表达式
Java学习笔记涵盖了一个全面的Java开发者成长路径,从基础到高级,包括Web应用程序开发的关键技术和流行的框架。以下是对各个阶段知识点的详细阐述: 1. **Java基础**:这部分涵盖了Java语言的基本语法,面向对象...
EL&JSTL笔记学习笔记
【JAVA WEB学习笔记】 Java Web是Java技术在Web开发领域中的应用,涵盖了从服务器端编程到客户端交互的各种技术。这份学习笔记将带你深入理解Java Web的核心概念和实践技巧。 1. **Servlet与JSP** - Servlet是...
### Java学习笔记知识点总结 #### 一、Java基础知识 (Basic Java & Core Java) - **基本概念**:介绍Java的历史背景、特点以及应用领域。 - **数据类型**:讲解Java中的基本数据类型(如int、double等)和引用数据...
**JSTL(JavaServer Pages Standard Tag Library)详解** JSTL是JavaServer Pages标准标签库,它提供了一组预定义的标签,用于简化JSP页面的开发,使其更加结构化,可读性更强,同时也提高了代码的复用性和可维护性...
总结起来,这个压缩包提供了全面的JSTL和EL的学习资源,不仅有详细的文档,还有实际可用的库文件,对于初学者或经验丰富的开发者来说,都是宝贵的参考资料。通过深入理解和熟练运用这些知识点,可以提升JSP页面的...
在Struts2中,学习笔记通常会涵盖以下几个关键概念: 1. **源代码查看和Javadoc**:开发者可以通过查看源代码来理解Struts2的工作原理,而Javadoc则提供了API文档,帮助理解类和方法的功能。 2. **包(Package)和...
这篇学习笔记将深入探讨这两个概念,以及它们在实际开发中的应用。 Servlet是Java编程语言的一个接口,由Sun Microsystems(现为Oracle)定义,它允许Java代码与HTTP服务器交互。Servlet主要负责处理客户端的请求并...
在提供的"JSP学习笔记"中,可能会涵盖这些概念的详细解释、示例代码以及实际应用中的技巧。这些笔记对于初学者理解和掌握JSP技术非常有帮助,同时也适合进阶者作为参考。通过深入学习和实践,开发者可以更好地利用...
【Java学习笔记】是本次分享的核心内容,涵盖了从基础到进阶的各种Java技术知识点。这份笔记集合了作者在某培训机构的深入学习与实践,旨在帮助读者全面理解和掌握Java编程。 首先,我们从基础开始,01. Unix note....
**JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面标准标签库,它提供了一系列的标签用于简化JSP开发,使代码更加简洁且...通过学习和实践,开发者可以有效地利用JSTL提升Web应用的开发效率和质量。