jsp标签
jsp标签作用
替换jsp脚本
jsp标签分类
- 内置标签(动作标签): 不需要在jsp页面导入标签
- jstl标签: 需要在jsp页面中导入标签
- 自定义标签 : 开发者自行定义,需要在jsp页面导入标签
动作标签(重要的三个)
转发标签: <jsp:forward />
- 标签用于把请求转发给另外一个资源
- <jsp:forward page="relativeURL | <%=expression%>" />
- page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个 表达式来获得。
参数标签: <jsp:pararm/>
- 当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资 源时,可以使用<jsp:param>标签向这个资源传递参数
<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
包含标签: <jsp:include/>
- 语法
<jsp:include page="relativeURL | <%=expression%>" flush="true|false"/>
<!--向被包含页面传的参数-->
<jsp:param name="参数名称" value="参数值"/>
</jsp:include>
<!-- page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来
获得。-->
<!--flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输
出的内容刷新到客户端,默认为false。-->
-
原理: 包含与被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。 (先翻译再合并),动态包含
-
静态包含 vs 动态包含的区别?
-
语法不同
- 静态包含语法: <%@inclue file="被包含的页面"%>
- 动态包含语法: <jsp:include page="被包含的页面">
-
参数传递不同
- 静态包含不能向被包含页面传递参数
- 动态包含可以向被包含页面传递参数
-
原理不同
- 静态包含: 先合并再翻译
- 动态包含: 先翻译再合并
-
其他的动作标签(不常使用)
<jsp:useBean>
- 创建一个Bean实例
- 语法
不存在Body的格式
<jsp:useBean
id="变量名"
scope"page|request|session|application"--Bean实例范围,属于那个域,默认是page域
{
class="package.className"--完整的类名不能与beanName同时存在,没有它时必须设置type|
type="数据类型"--指定创建实例的本身或类的父类或者接口|
beanName--指定完整的类名,可以是一个表示完整类名的表达式
}
/>
<jsp:setProperty name="变量名" property="*"/>
在Body内写入内容的格式
<jsp:useBean id="变量名" scope="JSP范围">
<jsp:setProperty name="变量名" property="*"/>
</jsp:useBean>
<jsp: setProperty>
- 通常与<jsp: useBean>一起使用,它将调用Bean中的setXxx();
<jsp: getProperty>
- 用来从指定的Bean中读取指定的属性值,Bean中必须有getXxx()方法
JSTL标签
介绍
JSTL (全名:java standard tag libarary - java标准标签库 )
- 核心标签库 (c标签库) 天天用
- 国际化标签(fmt标签库)
- EL函数库(fn函数库)
- xml标签库(x标签库)
- sql标签库(sql标签库)
使用JSTL标签步骤
- 导入jstl支持的jar包(标签背后隐藏的java代码)
注意:使用javaee5.0的项目自动导入jstl支持jar包
- 使用taglib指令导入标签库
<%@taglib uri="tld文件的uri名称" prefix="简写" %>
- 在jsp中使用标签
<c: out>
- <c: out> 标签用于输出一段文本到浏览器中
属性名 | 是否支持 EL | 属性类型 | 属 性 描 述 |
---|---|---|---|
value | true | Object | 指定要输出的内容 |
escapeXml | true | Boolean | 指定是否将>、<、&、'、"等特殊字符进行HTML编码转换后再进行输出。默认值为true |
default | true | Object | 指定如果value属性的值为null/””时所输出的默认值 |
<c: set> 标签
- <c: set>标签用于把某一个对象存在指定的域范围内,或者设置Web域 中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性
属性名 | 是否支持 EL | 属性类型 | 属 性 描 述 |
---|---|---|---|
value | true | Object | 用于指定属性值 |
var | false | String | 用于指定要设置的Web域属性的名称 |
scope | false | String | 用于指定属性所在的Web域 |
target | true | Object | 用于指定要设置属性的对象,这个对象必须是JavaBean对象或java.util.Map对象 |
property | true | string | 用于指定当前要为对象设置的属性名称 |
<c:if>
- <c:if test=“”>标签可以构造简单的“if-then”结构的条 件表达式
属性名 | 是否支持 EL | 属性类型 | 属 性 描 述 |
---|---|---|---|
test | true | boolean | 决定是否处理标签体中的内容的条件表达式 |
var | false | String | 用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称 |
scope | false | String | 指定将test属性的执行结果保存到哪个Web域中 |
<c:choose> 标签
- c:choose>标签用于指定多个条件选择的组合边界,它必须与 <c:when>和<c: otherwise>标签一起使用。使用<c: choose>, <c:when>和<c: otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<c:set value="${param.count}" var="count“ />
<c:choose>
<c:when test="${count == 0}">
对不起,没有符合您要求的记录。
</c:when>
<c:otherwise>
符合您要求的记录共有${count}条.
</c:otherwise>
</c:choose>
<c:forEach> 标签
- <c:forEach>标签用于对一个集合对象中的元素进行循环迭代操 作,或者按指定的次数重复迭代执行标签体中的内容。
属性名 | 是否支持 EL | 属性类型 | 属 性 描 述 |
---|---|---|---|
var | false | String | 指定将当前迭代到的元素保存到page这个Web域中的属性名称 |
items | true | 任何支持的类型 | 将要迭代的集合对象 |
varStatus | false | String | 指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称 |
begin | true | int | 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代 |
end | true | int | 参看begin属性的描述 |
step | true | int | 指定迭代的步长,即迭代因子的迭代增量 |
<c:forTokens>
- 对带有相同符合格式内容进行分割输出,例如varstr="1,2,3,4,5,6";
属性名 | 是否支持 EL | 属性类型 | 属 性 描 述 |
---|---|---|---|
Items | true | 任何支持的类型 | 将要迭代的集合对象 |
delims | false | String | 字符串的分割符,可以同时有个分割符(依次写在引号内即可。) |
varStatus | false | String | 指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称 |
begin | true | int | 如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代 |
end | true | int | 参看begin属性的描述 |
step | true | int | 指定迭代的步长,即迭代因子的迭代增量 |
var | False | String | 指定将当前迭代到的元素保存到page这个Web域 |
<c:url> 标签
- <c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是 实现URL重写。URL重写就是将会话标识号以参数形式附加在URL 地址后面
属性名 | 是否支持 EL | 属性类型 | 属 性 描 述 |
---|---|---|---|
value | true | String | 指定要构造的URL,/表示day15 |
var | false | String | 指定将构造出的URL结果保存到Web域中的属性名称 |
scope | false | String | 指定将构造出的URL结果保存到哪个Web域中 |
<c:catch> 标签
- <c:catch>标签用于捕获嵌套在标签体中的内容抛出的 异常,其语法格式如下:<c:catch [var="varName"]> nested actions </c:catch>
<c:redirect> 标签
- <c:redirect>标签用于将当前的访问请求转发或重定向到其他资 源,它可以根据url属性所指定的地址,执行类似<jsp:forward>这 个JSP标准标签的功能,将访问请求转发到其他资源;或执行 response.sendRedirect()方法的功能,将访问请求重定向到其他资 源。
<c:param> 标签
- 在JSP页面进行URL的相关操作时,经常要在URL地址 后面附加一些参数。<c:param>标签可以嵌套在<c: import>、<c:url>或<c:redirect>标签内,为这些标 签所使用的URL地址附加参数。<c:param>标签在为一 个URL地址附加参数时,将自动对参数值进行URL编码, 例如,如果传递的参数值为“中国”,则将其转换为 “%d6%d0%b9%fa”后再附加到URL地址后面,这也就 是使用<c:param>标签的最大好处。