如何将servlet中的变量在jsp页面中显示---jsp中的jstl表达式(C标签)

jstl又称jsp的标准标签库:C标签*,fmt标签,fn标签,sql标签,xml标签,这里重点讲C标签

目的:El和jstl都是为了在jsp中消灭Java代码

注意:在<!DOCTYPE html >标签之上写
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

1.c:out标签
作用:用来将作用域对象中的数据输出到页面中
例:
<%
request.setAttribute("weather", "今天天气怎么样?");
%>

<c:out value="${weather}" default="出门自己看!"></c:out>

即: value非空,执行value,value为空时,执行default,

2.c:set标签
作用一:用于将数据放入到作用域对象中,默认放入到最小的作用域中
例一:
<%
request.setAttribute("weather", "今天天气怎么样?");
%>

  <c:set var="name" value="zhangsan"></c:set>


即:默认将数据放入到pageContext中,所以用${requestScope.name}无法获取到值

例二:
<%
request.setAttribute("weather", "今天天气怎么样?");
%>

<c:set var="name" value="zhangsan" scope="request"></c:set>
${requestScope.name}


利用 scope="request"设置最小作用域为request,则${requestScope.name}可获取其值

作用二:c:set还可以在标签中间添加html代码作为标签value的属性值
如例三:
<c:set var="mytable">
<%-- border-collapse:collapse 为设置边框收合--%>
<table border="1" style="border-collapse:collapse ">
<tr><td>1.1</td><td>1.2</td></tr>
<tr><td>2.1</td><td>2.2</td></tr>
</table>
</c:set>

可由${mytable}来获取内容

3.c:remove标签
作用:将指定key从指定作用域中删除,也可以通过scope属性指定作用域

例如:
<%
pageContext.setAttribute("scope", "pageContext");
request.setAttribute("scope", "request");
session.setAttribute("scope", "session");
application.setAttribute("scope", "application");
%>

<c:remove var="scope" />删除key为scope的作用域,即上面四个全被删除

<c:remove var="scope" scope="page"/>只删除pageContext作用域,可由${scope}获取最小作用域内容


4.c:if标签

作用: 做一重判断
例如:
<%
request.setAttribute("score", 80);
%>


<c:if test="${score >= 90}" var="flag">
成绩优秀!
</c:if>
<c:if test="${!flag}">
成绩不优秀!
</c:if>

当满足条件则执行相应的语句

5.c:choose,c:when,c:otherwise组合标签
作用: 可以表示多重判断

例如:
<%
request.setAttribute("score", 80);
%>

<c:choose>
<c:when test="${score >=90}">成绩优秀</c:when>
<c:when test="${score >=80}">成绩良好</c:when>
<c:when test="${score >=60}">成绩及格</c:when>
<c:otherwise>成绩不及格</c:otherwise>
</c:choose>

当满足条件则执行相应的语句

注意:1.c:otherwise不能出现在c:when之上
           2.c:otherwise和c:when之间,c:otherwise和c:otherwise之间不能出现其它字符

6.c:forEach
作用一:遍历数据


例如 <c:forEach begin="1" end="10" step="2" var="num" varStatus="statu">
${num}---${statu.first}---${statu.last}---${statu.index}---${statu.count} <br/>
</c:forEach>
解析
begin:遍历起始位置
end:遍历的末尾位置
step:每次遍历的步长,默认为1
var:用于做遍历的变量
varStatus:当前遍历的变量的状态

statu.first:判断该数字是不是第一个
statu.last:判读该数字是不是最后一个
statu.index:表示当前数字的下标
statu.count:表示当前第几次循环

作用二:在items里填入一个可以遍历的结构

例如:
<%
List list = new ArrayList();
list.add(new User("zhangsan", "张三"));
list.add(new User("lisi", "李四"));
list.add(new User("wangwu", "王五"));
list.add(new User("zhaoliu", "赵六"));

request.setAttribute("person", list);

%>


<c:forEach items="${person}" var="p">
${p.username}---${p.realname}
<br>
</c:forEach>

或更高级一点的

<table border="1" style="border-collapse:collapse">
<tr><td>用户名</td><td>真实姓名</td></tr>
<c:forEach items="${person}" var="p">
<tr><td>${p.username}</td><td>${p.realname}</td></tr>
</c:forEach>
</table>

可遍历List中的内容


7.c:import
作用:将一个URL中的内容导入本页面中一起显示

例如:<c:import url="http://www.baidu.com"></c:import>


8.c:redirect
作用:重定向

例如:<c:redirect url="http://www.baidu.com"></c:redirect>