1.内置标签
a.请求转发:
<jsp:forward/>
<jsp:pararm/>
<jsp:forward page="/index.jsp">
<jsp:pararm name="参数名" value="参数值"/>
</jsp:forward>
b.动态页面包含:
<jsp:include/>
< jsp:include page="index.jsp"></jsp:include>
- 注:静态包含和动态包含的区别
1) 语法不同
静态包含语法:<%@inclue file="被包含的页面"%>
动态包含语法:<jsp:include page="被包含的页面">
2)参数传递不同
静态包含不能向被包含页面传递参数
动态包含可以向被包含页面传递参数3)原理不同
静态包含: 先合并再翻译
动态包含: 先翻译再合并
2.JSTL标签
JSTL(java standard tag libarary --java标准标签库)
- 核心标签库:c标签库(重要)
- 国际化标签库:fmt标签库
- EL函数库:fn函数库
- xml标签库:x标签库(不常用)
- sql标签库:sql标签库(不常用)
-
使用步骤:
1.导入标签库jar包:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2.使用taglib指令导入标签库
<%@taglib uri="http://java.sun.com/jstl/core(tld文件的uri名称)" prefix="标签库简写" %>
3.使用
-
c标签库
保存数据:
<c:set></c:set>
获取数据:<c:out value=""></c:out>
单条件判断:<c:if test=""></c:if>
多条件判断:<c:choose></c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
循环数据:<c:forEach></c:forEach>
<c:forTokens items="" delims=""></c:forTokens>
重定向:<c:redirect url=""></c:redirect>
测试代码:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="com.eu.login.entity.Login" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set var="user" value="<h3>xiaoming</h3>"></c:set>赋值
<hr/>
取值:<c:out value="${user}" default="默认值" escapeXml="false"></c:out>
<hr/>
<c:if test="${!empty user}">
<h3>true</h3>
</c:if>
<hr/>
<c:set var="score" value="10"></c:set>
<c:choose>
<c:when test="${score>=60 && score <= 100}">
合格
</c:when>
<c:when test="${score<60 && score != 0}">
不合格
</c:when>
<c:otherwise>
没有成绩
</c:otherwise>
</c:choose>
<hr/>
<%
List list = new ArrayList();
list.add(new Login("xiao1","123"));
list.add(new Login("xiao2","456"));
list.add(new Login("xiao3","789"));
list.add(new Login("xiao4","159"));
request.setAttribute("list",list);
Map<String ,String> map = new HashMap<>();
map.put("001","小明1");
map.put("002","小明2");
map.put("003","小明3");
map.put("004","小明4");
request.setAttribute("map",map);
%>
<%--
begin:从那个元素开始
end:从那个元素结束
step:步长
items:需要遍历的数据(集合)
var:每个元素的名称
varStatus:当前正在遍历元素的状态对象
--%>
<c:forEach begin="0" end="3" step="1" items="${list}" var="login" varStatus="varsta">
序号:<c:out value="${varsta.count}"></c:out>
姓名:<c:out value="${login.username}"></c:out>
密码:<c:out value="${login.password}"></c:out><br/>
</c:forEach>
<hr/>
<c:forEach items="${map}" var="entry" varStatus="varsta">
序号:<c:out value="${varsta.count}"></c:out>
姓名:<c:out value="${entry.key}"></c:out>
密码:<c:out value="${entry.value}"></c:out><br/>
</c:forEach>
<hr/>
<%
String str = "代码-25-36-54-25";
request.setAttribute("str",str);
%>
<%--根据指定的分隔符来分隔内容并迭代输出--%>
<c:forTokens items="${str}" delims="-" var="st">
元素:<c:out value="${st}"></c:out><br>
</c:forTokens>
<hr>
<%--重定向--%>
<c:redirect url="index.jsp"></c:redirect>
</body>
</html>
测试结果:
-
fmt标签库
-
fn函数库
文章文集:JavaEE--学习笔记