JSP中的JSTL标签库的常用语法及用法

概念

JSTL:在jsp页面写java代码
JavaServer Tag Library JSP标准标签库

标签库 即内中含有了很多标签的库
JSTL是由Apache组织提供的开源的免费的jsp标签库
用于简化和替换jsp页面上的java代码
简化jsp中的java代码编写 替换<%%>写法 与EL表达式配合

用法

  • 1、导入javax.servlet.jsp.jstl.jarjstl-impl.jar
  • 2、页面上使用<%@ taglib %>引入标签库
  • 3、使用标签

引入标签库:
在JSP页面上部加上taglib标签
语法:<%@taglib prefix="标签库的别名" uri="标签库的路径"%>

路径引入1.1版本的core
即http://java.sun.com/jsp/jstl/core
因为1.0版本的core不支持EL表达式

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

常用标签

c : if

相当于Java中的if判断语句
判断request域中的list集合是否为空 若不为null则显示并遍历该集合

<%
	List list=new ArrayList();
	list.add("我是list中的内容");
	request.setAttribute("list",list);
%>

<c:if test="${!empty requestScope.list}">
	${requestScope.list}
</c:if>

test属性用于接收boolean表达式 若为true 则显示<c:if>标签体中的内容 若为false 则不显示
一般情况下 test属性的值会结合EL表达式一起使用

注:c:if里没有else 若想实现else效果 可以再写一个<c:if>标签

<c:if test="${requestScope.number%2!=0}">
        ${number}为奇数
</c:if>
<c:if test="${requestScope.number%2==0}">
        ${number}为偶数
</c:if>

var属性里的result表示text里的EL表达式的结果将会被存到result变量里
并且默认把它存到pageContext域当中
当然也可以用scope属性来表示存的域 例如scope="session"就是表明存到session域中


c : choose

==》c : when和c : otherwise
相当于Java中的switch判断语句
switch语句即if…else…语句的一种简化形式 是一种判断语句

<%
	request.setAttribute("number",1);
%>

<c:choose>
	<c:when test="${number==1}">星期一</c:when>
	<c:when test="${number==2}">星期二</c:when>
	<c:when test="${number==3}">星期三</c:when>
	<c:when test="${number==4}">星期四</c:when>
	<c:when test="${number==5}">星期五</c:when>
	<c:when test="${number==6}">星期六</c:when>
	<c:when test="${number==7}">星期日</c:when>
	
	<%--表示其他情况--%>
	<c:otherwise>数字输入有误</c:otherwise>
</c:choose>

c : forEach

相当于Java中的for循环语句

用法一:遍历容器中的内容

<%
	List list=new ArrayList();
	list.add("111");
	list.add("222");
	list.add("333");
	request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="num" varStatus="s">
	${num} == ${s.index} == ${s.count}<br>
</c:forEach>

上述代码用于从items里的EL表达式里的pageContext里的list里遍历每个item
items里填入的必须是EL表达式 因为只能从EL表达式中获取对象
并将每次遍历到的东西存放在var里的number变量里

内中可以写html代码 因此十分方便

运行结果:

111 == 0 == 1
222 == 1 == 2
333 == 2 == 3

items属性:容器对象
var属性:容器中元素的临时变量
varStatus属性:循环状态对象
循环状态对象的部分属性:
index:代表当前循环的是第几个(即当前的索引下标) 从0开始
count:代表当前循环的次数 从1开始

用法二:完成重复的操作

<c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
	${i} == ${s.index} == ${s.count}<br>
</c:forEach>

上述代码用于从begin的1到end的10循环遍历 每次遍历的step步数为2
var里的 i 表示遍历出来的结果将会被存到 i 变量里

内中可以写html代码 因此十分方便

运行结果:

1 == 1 == 1
3 == 3 == 2
5 == 5 == 3
7 == 7 == 4
9 == 9 == 5

begin属性:开始值(包含)
end属性:结束值(包含)
var属性:临时变量 相当于i
step属性:步长 即每次增减多少
varStatus属性:循环状态对象
循环状态对象的部分属性:
index:代表当前循环的是第几个(即当前的索引下标) 从0开始
count:代表当前循环的次数 从1开始


c : set

用法:

<c:set var="name" value="Mike" scope="session"></c:set>

相当于声明了一个对象 它的name属性值为Mike
并且默认存到pageContext域当中
当然也可以用scope来表示存的域 这里的scope="session"就是表名存到session域中


JSP动作标签

1、jsp:include

<jsp:include page="test.jsp"></jsp:include>

此处为动态包含
即为不把包含的页面的所有元素标签拿来输出 而是把它的运行结果拿来输出

Jsp的执行阶段:
Jsp => Java文件 => class文件 => 执行
这里是在运行时包含

该标签与<%@ include %>的区别:
<jsp:include page="<%=url %>"></jsp:include>可以在运行的时候确定是哪个变量
<%@ include file="include.jsp" %>这里必须写具体的页面 不能用变量来替代


2、jsp:forward

<jsp:forward page="test.jsp"></jsp:forward >

即为请求转发
等同于request.getRequestDispatcher("test.jsp").forward(request,response)

用了请求转发 本页面的内容就不显示不执行


3、jsp:param

<jsp:forward page="test.jsp">
	<jsp:param value="beijing" name="address">
</jsp:forward >

在包含某个页面或是在跳转某个页面时 加入这个参数
request.getParameter("name属性的值")获取


发布了174 篇原创文章 · 获赞 5 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/Piconjo/article/details/104919815
今日推荐