<%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%>
1.${el表达式}
1.1.访问bean的属性:(bean是有属性和get,set方法的java类)
方式一:
getAttribute绑订的数据
${user.name}
依次从pageContext,request,session,application中
查找(getAttribute)绑订的数据
范围使用pageScope,requestScope,sessionScope,applicationScope来指定
例子:
${sessionScope.user.name}
方式二:
${user["name"]}
允许[]里是邦定名称和数组下标
1.2. 获取请求参数值
${param.age}
等价于request.getParameter("age");
${paramValues.city}
request.getParameterValues("city");
1.3. 进行一些简单的计算
一:将计算结果直接输出
二:给jsp标签的属性赋值
a,算术运算 : "+","-","*","/","%"
b,逻辑运算: "&&","||","!"
c,关系运算: ">","<","==","!=",">=","<="
d,empty运算:判断 集合,字符串
例子:空字符串:${empty ""}
2.jsp标准标签
2.1.标签使用步骤(1.5版本以上不需要导入)
step1,.jar文件拷贝到WEB-INF\lib下。
step2,使用taglib指令引入标签
<%@taglib uri="" prefix=""%>
uri属性:指定命名空间,参考对应的.tld文件
prefix属性:命名空间的前缀。
例子1:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
例子2:
<%@taglib uri="http://www.google.com" prefix="c1"%>
2.2.核心标签
a, if标签
<c:if test="" var="" scope="">
标签体: 可以是html, <% %> <%= %> <%! %>
</c:if>
当test属性为true,执行标签体的内容。test属性可以使用el表达式来赋值。
var属性:指定一个绑订名。
scope属性:指定绑订范围,可以是"page","request","session","application"。
例子:
<c:if test="${param.age > 20}" var="rs" scope="request">
<div>你是一个成年人</div>
</c:if>
<c:if test="${!rs}">
<div>你是一个未成年人</div>
</c:if>
b,choose标签
<c:choose>
<c:when test="">
</c:when>
...
<c:otherwise>
</c:otherwise>
</c:choose>
when标签可以出现一次或者多次,
otherwise只能出现1次或者0次,表示例外。
例子:
<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标签
用来对集合进行遍历
<c:forEach items="" var="" varStatus="">
</c:forEach>
items 属性: 用来指定要遍历的集合,一般使用el表达式来赋值。
var 属性: 用来指定一个绑订名,绑订范围是pageContext。
varStatus属性: 该对象提供了获取当前遍历状态信息的方法,
比如,getIndex方法(返回当前遍历的对象的下标,从0开始),
getCount方法(返回当前是第几次访问,下标从1开始)
第二中用法:
//每次增加1 把当前的号 放到 var 里面
<c:forEach begin="(从几开始)" end="(从几结束)" var="">
</c:forEach>
例子:
<c:forEach items="${users}" var="user" varStatus="s">
<tr class="row${s.index % 2 + 1}">
<td>${s.count} </td>
<td>${user.name}</td>
<td>${user.gender}</td>
<td>${s.index}</td>
</tr>
</c:forEach>
2.3.jsp标签是如何运行的?
容器依据标签的命名空间找到相应的标签的描述文件(.tld文件),
接下来,依据标签的描述文件找到标签类,然后实例化,
最后调用标签对象的相应的方法。
3.自定义标签
3.1. 写一个java类,继承SimpleTagSupport类。
3.2. override doTag方法,在该方法里面,编写相应的处理逻辑。
3.3. 在.tld文件当中,描述标签。可以参考 c.tld文件,并且,描述文件要放到WEB-INF下
<tlib-version>1.1(版本信息)</tlib-version>
<short-name>c1(简称)</short-name>
<uri>http://www.tarena.com.cn/mytag(命名空间)</uri>
<tag>
<name>sayHello(标签名字)</name>
<tag-class>mytag.HelloTag(标签类,包名.类名)</tag-class>
<body-content>empty(标签体的内容,empty,scriptless,jsp)</body-content>
<attribute>
<name>msg(属性名)</name>
<required>true(是不是必须)</required>
<rtexprvalue>false(能不能用el表达式)</rtexprvalue>
</attribute>
<attribute>
<name>qty(可以多个属性)</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
3.4.标签类获得out对象的办法
//通过SimpleTagSupport类提供的getJspContext方法
//获得PageContext。
PageContext ctx = (PageContext)getJspContext();
//PageContext提供了获取其它八个隐含对象的方法
JspWriter out = ctx.getOut()
----------------------------------------------