jsp常用标签
1.jstl简介
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。
要使用JSTL,则必须将jstl.jar和 standard.jar文件放到classpath中,如果你还需要使用XML processing及Database access (SQL)标签,还要将相关JAR文件放到classpath中,这些JAR文件全部存在于下载回来的zip文件中。
2.EL表达式
(1) el表达式的格式:${},如${user.name}。
(2)el表达式中 . 和 []的区别。
如:${user.name}等价于${user["name"]}
[]还可以用来集合元素中的定位如:${booklist[0].price}
有特殊字符的时候要用[]如:${booklist[first-name]},不能用${booklist.first-name}
通过变量动态取值要用[]如:${user[param]}
(3)el变量
${username}如果不指定el变量,则先去Page,后Request,后Session,后Application去找先关变量。
4.el类型转换
5.el运算符
如:${empty username}user如果为空则返回true
6.jstl标签
首先要引入c标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
(1)<c:out></c:out>
前提:request.setAttribute("name","xiaoming");
<c:out value="${name}" default="error" escapeXml="false"></c:out>
输出:xiaoming,如果没有name值默认输出error,如果escapeXml为false,>将会输出为>(转义字符)
(2)<c:set value="" scope="" var="">放入你的值</c:set>
注:var:存入到那个作用域的变量,value:值,scope:作用域
存值到java bean中
首先要创建java bean,然后在jsp中引入java bean,id为java bean的实例。
<jsp:useBean id="person" class="com.wjn.**"></jsp:useBean>
<c:set target="person" property="name" value="xioaming" ></c:set>property:java bean的属性
(3)<c:remove var="username"></c:remove>
var:必选,需要删除的属性值
(4)<c:catch></c:catch>catch标签还可以包含其它标签
<c:catch var="error">
<c:set target="aa" property="name"></c:set>假设target值不存在
</c:catch>
<c:out value="${error}"></c:out>
输出:javax.servlet.jsp.JspTagException
(5)<c:if test="" var="" scope=""></c:if>
test:存放判断的条件
var:指定名称用来存放判断的结果类型是true还是false
scope:用来指定var属性指定的范围
<c:if test="${param.scop>=90}" var="result" scope="session"></c:if>
<c:out value="${result}"></c:out>如果param.scop>=90则输出true
(6)choose,when,otherwise
<c:choose>
<c:when test="${param.scop>=90}"></c:when>
<c:when test="${param.scop<90}"></c:when>
<c:otherwise></c:otherwise>
</c:choose>
(7)<c:forEach var="" items="" begin="" end=""></c:forEach>
var:设定变量名用于存储从集合中取出元素
items:需要遍历的集合
begin:遍历的起始位置
end:遍历的结束位置
step:指定循环的步长,如过step=2,只输出以1,3为下标的元素
varStatus:通过index(在子集中的序号),count(输出的第几个元素),first(是否是遍历的第一个元素,是返回true),last(遍历的最后一个元素)几个状态值描述begin和end子集中的元素
(8)<c:forToken></c:forToken>
用于浏览字符串
items:指定被迭代的字符串
delims:指定使用的分隔符
var:指定用于存放遍历到的成员
例如:
<c:forToken items="sdf-f-ggd0" delims="-" var="s">
<c:out value="${s}"></c:out>
</c:forToken>
(9)<c:import></c:import>
url:被导入资源的url路径
context:相同服务器下的其它web工程,必须以"/"开头,值为另一个工程名,
引入的是webapps下的其它web project,如果不在webapps下有如下设置,见下图
var:以String类型存入被包含文件的内容
scope:var变量的jsp范围,存入的作用域
charEncoding;编码
varReader:以Teader类型存储被包含的文件内容
如将tt.text中的内容存入session中,然后再取出来。
<c:import url="tt.text" var="aa" scope="session" charEncoding="gbk"></c:import>
<c:out value="${sessionScope.aa}"></c:out>
(10)<c:redirect></c:redirect>
url:重定向到哪个页面
context:用于导入其它web中的页面
例子如下:
<c:redirect url="test.jsp">
<c:param name="username">xiaoming</c:param>
</c:redirect>
在test.jsp中用取值
<c:out value="${param.username}"></c:out>将会输出小明。
(11)<c:url></c:url>
-该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接
.value表示url路径值
var 将url路径存储在变量中
.scope var变量的范围
例子如下:
<c:if test="${1<2}">
<c:set var="partUrl">temp.jsp</c:set>
</c:if>
<c:url value="http://localhost:8080/Test/${partUrl}" var="newUrl" scope="session"></c:url>
(12)jstl函数的使用
JSTL函数
使用JSTL函数需要导入:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:out value="“Hello World”字符串中是否包含“Hello”?${fn:contains('Hello World','Hello')}"></c:out>
注:如果前一个字符串包含后一个字符串则返回true.此处返回true
<hr>
<c:out value="“Hello World”字符串中是否包含“ABCD”?${fn:contains('Hello World','ABCD')}"></c:out>
注:如果前一个字符串包含后一个字符串则返回true.此处返回false
<hr> <c:out value="“Hello World”字符串中是否包含“hello”(忽略大小写)?${fn:containsIgnoreCase('Hello World','hello')}"></c:out> <hr> <c:out value="“Hello”是否在“Hello World”字符串开头?${fn:startsWith('Hello World','Hello')}"></c:out> <hr> <c:out value="“world”是否在“Hello World”字符串尾部?${fn:endsWith('Hello World','world')}"></c:out>
<book>书</book>
<hr>
<!-- 可输出标签但会出现转义问题 -->
<c:out value="${fn:escapeXml('<book>书</book>')}"></c:out>
<book>abc</book>
<hr> <!-- 可输出标签且不会出现转义问题 --> <c:out value="<book>书</book>"></c:out> <hr> <!-- indexOf函数用法 --> <c:out value="“Hello World”字符串“llo”出现的index值:${fn:indexOf('Hello World','llo')}"></c:out>