JavaWeb(JSTL标签库学习笔记)

一、 JSTL标签库

1.1、什么是JSTL

Java Standard Tag Library Java标准标签库,一组由Sun公司已经制作好的扩展标签库,可以在JSP页面直接使用。每个标签都有它自己的功能。可以替换JSP页面上的Java代码。

1.2、JSTL标签库分类:

JSTL

前缀

URI

作用

核心标签库

c

http://java.sun.com/jsp/jstl/core

一组常用的核心标签库

国际化标签

fmt

http://java.sun.com/jsp/jstl/fmt

用于页面的国际化,在不同的国家显示不同的语言

数据库标签

sql

http://java.sun.com/jsp/jstl/sql

可以直接在JSP页面上使用标签访问数据库

XML标签

x

http://java.sun.com/jsp/jstl/xml

用于在JSP上解析XML

函数标签

fn

http://java.sun.com/jsp/jstl/functions

在页面上使用一组字符串的函数


1.3、 JSTL 使用步骤

1.3.1. 导包jstl.jar

1.3.2. JSP页面上使用taglib指令

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

1.3.3. 使用标签库

二、 判断标签<c:if> 

2.1作用

属性名

是否支持EL

属性类型

属 性 描 述

test

true

boolean

用来判断表达式是否为真,如果为真,则执行if标签内的代码

var

false

String

将上面的test的运算结果存在这个变量名中

scope

false

String

将上面的test的运算结果放在哪个域中


2.2示例:在LoginServlet中的会话添加一个用户信息,重定向到login.jsp页面,在login.jsp使用<c:if>进行判断。如果当前用户已经登录,则显示"欢迎您!Xxx登录成功!",否则显示一个登录的链接。

2.3代码

<!-- 判断会话域中是否有user对象,如果没有,则跳转到login.jsp -->
  <c:if test="${empty sessionScope.user }" >
    <!-- 重定向 -->
  	<c:redirect url="/login.jsp"/>
  </c:if>
   欢迎您!${sessionScope.user}

三、多分支标签

3.1作用

标签名

作用

choose

判断标签的父标签

when

多分支的判断条件,属性:test,类似于switchcase

otherwise

类似于switch中的default


四、遍历标签<c:forEach>

4.1作用:

属性名

是否支持EL

属性类型

属 性 描 述

var

false

String

指定遍历中每个元素的变量名

varStatus

false

String

每次循环对象的状态,有4个属性

items

true

任何支持的类型

要遍历的集合或数组

begin

true

int

从哪一行开始

end

true

int

到哪一行结束

step

true

int

步长,每次跨几条记录


4.2 varStatuus属性

属性

类型

含义

index

int

当前是第几个元素,从0开始

count

int

到当前这一行一共有多少个元素了

first

boolean

如果当前是第一个元素,则返回true

last

boolean

如果当前是最后一个元素,则返回true


4.3遍历集合

<table border="1" width="600" align="center">
      	<caption>学生列表</caption>
      	<tr>
      		<th>编号</th>
      		<th>姓名</th>
      		<th>年龄</th>
      		<th>性别</th>
      	</tr>
      	<!-- 
      	每一行是一条记录
      	items: 要遍历的集合或数组
      	var: 集合或数组中的每个元素
      	varStatus: 当前元素状态
      		● index: 当前是第几个元素,从0开始
      		● count: 到当前这一行一共有多少个元素了
      		● first: 如果当前是第一个元素,则返回true
      		● last: 如果当前是最后一个元素,则返回true
      	begin: 从哪一行开始,从0开始
      	end: 到哪一行结束
      	step: 步长,跨几步
      	 -->
      	<c:forEach items="${requestScope.students}" var="stu" varStatus="row" >
      		<!-- 三元运算,如果为0,则输出style这句话,否则什么也不输出 -->
      		<tr ${row.count % 2 == 0 ? "style='background-color: lightgreen'":""}>
      			<td>${row.count}</td>
      			<td>${stu.name}</td>
      			<td>${stu.age}</td>
      			<!-- 字符串可以用单引号或双引号 -->
      			<td>${stu.male?"男":"女"}</td>
      		</tr>
      	</c:forEach>
      </table>

4.4遍历数组

数据放在作用域中,如果不放在作用域中可以使用JSP表达式

遍历数组:
   <%
   int [] arr = {44,12,5,1,2,3};
   pageContext.setAttribute("arr", arr);
   %>
   <br/>
   <c:forEach items="${arr}" var="num">
       ${num} <br/>
   </c:forEach>

4.5 遍历Map:

<%
/创建一个Map
   HashMap<String, String> map = new HashMap<String, String>();
   map.put("n1", "潘金莲");
   map.put("n2", "小乔");
   map.put("n3", "孙悟空");
   
   //放在请求域中
   request.setAttribute("map", map);
%>
<hr/>
   遍历Map
   <br/>
   <c:forEach items="${map}" var="entry">
   	${entry.key }  ->  ${entry.value} <br/>
   </c:forEach>

4.6类似于Java中for循环的用法

<hr/>
   从1到100
   <br/>
   <c:forEach begin="1" end="100" var="i" step="2">
   	${i} <br/>
   </c:forEach>




猜你喜欢

转载自blog.csdn.net/meibenxiang/article/details/77919185
今日推荐