标签:
1.jsp标签和el表达式
(1)什么是jsp标签?
jsp标签用来替换jsp文件中的java代码,容器遇到jsp标签之后,会依据标签找到标签类然后执行。
注: 因为直接在jsp当中写java代码,不利于jsp文件的维护(比如,将包含有java代码的jsp交给美工去修改就很不方便),所以,
sun才制订了jsp标签技术规范。
使用jsp标签技术,有两大优点:
a.jsp文件维护方便。
b.方便代码的复用。
(2)什么是el表达式?
是一套简单的运算规则,用于给jsp标签的属性赋值,也可以直接输出。
(3)el表达式的使用
1)访问bean的属性 (a1.jsp)
a.方式一
${user.name} 依次从pageContext,request,session,application中查找绑订名称为"user"的对象,找到该对象之后,
会调用该对象的"getName"方法,最后输出该方法的运行结果。
注:
a1. el表达式会将null转换成 ""输出。
a2. 如果依据绑订名找不到该对象,会输出""。
a3.可以使用pageScope,requestScope,sessionScope,applicationScope来指定查找范围。
b.方式二
${user["name"]}
注:
b1. []里面可以使用绑订名。
b2. []里面可以使用从0开始的下标,用来访问数组中的某个元素。
2)做一些简单的运算,运算结果可以用来给jsp的标签属性赋值,也可以直接输出。(a2.jsp)
a.算术运算+,-,*,/,%
注: + 只能求和,不能够连接字符串。
b.关系运算 >,>=,<,<=,==,!=
c.逻辑运算&&,||,!
d.empty运算
empty用来判断集合是否为空,或者是否是一个空字符串。
3)读取请求参数值 (a3.jsp)
${param.username}等价于request.getParameter("username");
${paramValues.city}等价于request.getParameterValues("city");
(4)jstl标签的使用
1)jstl是什么? (java standard tag lib)
apache公司开发的一套jsp标签,后来捐献给了sun,sun将其命名为jstl。
2)如何使用?
step1,将jstl相关的jar文件拷贝到WEB-INF\lib下。
注:如果使用的是javaee5.0或者以上版本,一般不用拷贝了。有些tomcat的版本不带有这个jstl的jar文件,需要拷贝。
step2,使用taglib指令引入要使用的标签。
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
uri:指定命名空间(namespace)。
prefix:命名空间的前缀。
注:uri在jstl-1.2.jar包下的META-INF下的c.tld中
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
3)jstl中的几个核心标签
a.if标签 (c1.jsp)
<c:if test="" var="" scope="">标签体</c:if>
当test属性值为true,会执行标签体。
test属性可以使用el表达式来赋值。
var属性:指定绑订名。
scope属性:指定绑订范围,可以是"page","request","session","application"。
性别:<c:if test="${user.gender==‘m‘}">男</c:if><br/>
<c:if test="${user.gender==‘f‘}">女</c:if><br/>
性别:<c:if test="${user.gender==‘m‘}">男</c:if><br/>
<c:if test="${user.gender!=‘m‘}">女</c:if><br/>
性别:<c:if test="${user.gender==‘m‘}" var="flag" scope="page">男</c:if><br/>
<c:if test="${!flag}">女</c:if><br/>
b.choose标签 (c2.jsp)(相当于java中的if…else if…)
<c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
</c:choose>
when可以出现1次或者多次,当test属性值为true时,执行标签体的内容。otherwise可以出现0次或者1次。
<c:choose>
<c:when test="${user.gender==‘m‘}">男</c:when>
<c:when test="${user.gender==‘f‘}">女</c:when>
<c:otherwise>保密</c:otherwise>
</c:choose>
c.forEach标签 (c3.jsp)
用来遍历集合或者数组
<c:forEach items="" var="" varStatus=""></c:forEach>
items属性: 指定要遍历的集合或者数组,可以使用el表达式。
var属性:指定绑订名,绑订范围是pageContext(每一次从集合或者数组中取一个元素绑订到pageContext上)。
varStatus属性:指定绑订名,绑订值是一个封装了当前遍历状态的一个对象(该对象提供了一些方法来获得当前遍历的状态)。
getIndex(): 获得当前正在被遍历的元素的下标(从0开始)。
getCount(): 获得当前是第几次遍历。
<c:forEach items="${users}" var="user" varStatus="s">
<tr class="row${s.index%2+1 }">
<td>${user.name }</td>
<td>${user.age }</td>
<td>${user.gender }</td>
<td>${s.index }</td>
<td>${s.count }</td>
</tr>
</c:forEach>
(5)自定义标签(简单标签技术) (web10-2)
step1,写一个java类,继承SimpleTagSupport类。 (HelloTag.java)
step2,override doTag方法,在方法里,编写相应的处理逻辑。
step3,描述标签(.tld文件)(mytag.tld)
<body-content>有三个值
<body-content>empty</body-content>
empty:该标签没有标签体。
scriptless:该标签可以有标签体,但是标签体的内容不能够包含有java代码<% %>,<%= %>,<%! %>。
JSP:该标签可以有标签体,并且标签体的内容可以含有java代码。但是。只有复杂标签技术支持该值。简单标签技术不支持JSP。
标签:
原文地址:http://www.cnblogs.com/gaochaojin/p/4823002.html