一、jsp基本组成元素
1) HTML元素:静态元素。 -->放置在service方法中当作out.write()的字符串参数直接向客户端输出
2) 表达式(Expression):。 -->放置在service方法中当作out.print()的参数。
<%= Java表达式 %> 计算表达式的值,并输出到客户端。表达式不能用;结束。
3) 代码片段(Scriptlet): --> 放置在service方法中当作普通代码来处理。
<% Java代码 %> 声明的变量是局部变量。
4) 声明(Declaration): 当作Servlet的成员看待。与service方法平级。
<%! 变量或方法的定义 %> 声明的是成员变量,成员方法。
5) JSP注释(Comment): 直接被忽略了。
<%-- --%> 客户端不能查看到。
6) 指令(Directive):编译时指令
<%@ 指令名 属性名="值".. %>
a) page 在转译成Servlet时对页面指定的一些配置信息
常用属性:pageEncoding,import,errorPage
b) include 静态包含。<%@ include file="URL" %> 不能向被包含的文件传递参数
c) taglib 导入标签库描述文件 <%@ taglib uri="URL" prefix="标签引用前缀" %>
7) 动作(Action):运行时命令
<jsp:动作名 属性名="值">...</jsp:动作名>
<jsp:动作名 属性名="值"/>
a) useBean, setProperty, getProperty
b) include:动态包含。
<jsp:include page="URL" flush="true">
<jsp:param name="参数名" value="值"/>
</jsp:include>
c) forward: 请求分派。
<jsp:forward page="URL">
<jsp:param name="参数名" value="值"/>
</jsp:forward>
注意:include指令和include动作的异同:
都是在一个页面中把另一个页面的内容包含进来。
include指令是在转译时把目标页面的内容添加到当前页面对应的Servlet的service方法。不能传递请求参数。include动作是在执行时才把目标页面的内容包含过来。可以传递请求参数。
二、EL表达式
语法:所有EL都是以 ${ 为起始、以} 为结尾的
工作原理:
l 依次从PageContext、HttpServletRequest、HttpSession、ServletContext中查找名字为“varName”的属性所对应的属性值
l 如果没有对应的属性,则返回空字符串。同名选择靠前的。
隐含对象:
类别 | 标识符 | 描述 |
JSP | pageContext | PageContext 处理当前页面 |
作用域 | pageScope | 同页面作用域属性名称和值有关的 Map 类 |
requestScope | 同请求作用域属性的名称和值有关的 Map 类 | |
sessionScope | 同会话作用域属性的名称和值有关的 Map 类 | |
applicationScope | 同应用程序作用域属性的名称和值有关的 Map 类 | |
请求参数 | param | 根据名称存储请求参数的值的 Map 类 |
paramValues | 把请求参数的所有值作为一个 String 数组来存储的 Map 类 | |
请求头 | header | 根据名称存储请求头主要值的 Map 类 |
headerValues | 把请求头的所有值作为 一个String 数组来存储的 Map 类 | |
Cookie | cookie | 根据名称存储请求附带的 cookie 的 Map 类 |
初始化参数 | initParam | 根据名称存储 Web 应用程序上下文初始化参数的 Map 类 |
有关他的基本的特性,这里不详细介绍,主要介绍一下特殊点
1)自动类型转换:${param.count + 20}
2)Empty 运算符
主要用来判断值是否为null 或空的,当使用该运算符判断集合属性时,可以判断是否存在该属性,可以判断该属性对应的集合是否为空集合.为空返回true ,不为空返回false
三、自定义标签
自定义标签流程:
1)根据业务要求确定标签的形式:
2)编写标签处理器类
3)编写的标签的tld文件
4)在web.xml文件中配置tld文件
注意:在servlet2.4规范以后,不需要在web.xml文件中配置
5) 在jsp页面使用taglib指令引入标签库,其中uri代表标签描述文件的位置,prefix:建议使用的前缀名
6)在页面中使用自定义标签
四、自定义函数
定义el函数的步骤:
1、定义java的方法,注意方法用public static修饰
2、在tld文件配置
3、页面的使用。步骤如下:
1) 引入函数库
2)在el表达式中使用