JSTL和Filter过滤器
JSTL:JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。
测试:
1、导入jstl包
2、创建一个test.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.print("dashuju");
response.getWriter().print("dashuju2005");
%>
<c:out value="hello jsp"></c:out>
<br/>
<c:out value="${param.username}" default="dashuju2005" escapeXml="true">
</c:out>
</body>
</html>
运行
Core 标签库
Core 标签库:又被称为核心标签库,该标签库的工作是对于 JSP 页面一般处理的封装。在该标签库中的标签一共有 14 个,被分为了四类,分别是:
- List item多用途核心标签: <c:out> 、 <c:set> 、 <c:remove> 、 <c:catch>
- List item条件控制标签: <c:if> 、 <c:choose> 、 <c:when> 、 <c:otherwise>
- 循环控制标签: <c:forEach> 、 <c:forTokens>
- URL 相关标签: <c:import> 、 <c:url> 、 <c:redirect> 、 <c:param>
用于显示的 <c:out> 标签
<c:out> 标签是一个最常用的标签,用于在 JSP 中显示数据。它的属性和描述如下所示:
<c:out> 标签属性和说明
属性 | 描述 |
---|---|
value | 输出到页面的数据,可以是 EL 表达式或常量(必须) |
default | 当 value 为 null 时显示的数据(可选) |
escapeXml | 当设置为 true 时会主动更换特殊字符,比如“ <,>,& ”(可选,默认为 true ) |
在 JSTL1.0 的时候,在页面显示数据必须使用 <c:out> 来进行。然而,在 JSTL1.1 中,由于 JSP2.0 规范已经默认支持了 EL 表达式 ,因此可以直接在 JSP 页面使用表达式。
创建c_out1.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--第1个out标签 --%>
userName属性的值为:
<c:out value="${parm.username}" default="unknown" />
<br>
<%--第2个out标签 --%>
userName属性的值为:
<c:out value="${param.username}">
unknown
</c:out>
</body>
</html>
运行:
传递一个参数
创建c_out2.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:out value="${param.username }" escapeXml="true">
<meta http-equiv="refresh" content="0;url=http://www.itcast.cn" />
</c:out>
</body>
</html>
运行
用于判断的 <c:if> 标签
<c:if> 标签用于简单的条件语句。它的属性和描述如下所示:
<c:if> 标签属性和说明
属性 | 描述 |
---|---|
test | 需要判断的条件 |
var | 保存判断结果 true 或 false 的变量名,该变量可供之后的工作使用(可选) |
scope | 变量的作用范围,若没有指定,默认为保存于 page 范围中的变量(可选) |
创建一个c_if.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- request.setAttribute("key,1"); --%>
<c:set var="key" value="1" scope="request" property="key1"></c:set>
${
requestScope.key }
<c:if test="${key==2 }">
hello c:if标签
</c:if>
</body>
</html>
运行:
用于复杂判断的 <c:choose> 、 <c:when> 、 <c:otherwise> 标签
这三个标签用于实现复杂条件判断语句,类似“ if,elseif ”的条件语句。
- List item <c:choose> 标签没有属性,可以被认为是父标签, <c:when> 、<c:otherwise> 将作为其子标签来使用。
- <c:when> 标签等价于“ if ”语句,它包含一个 test 属性,该属性表示需要判断的条件。
- <c:otherwise> 标签没有属性,它等价于“ else ”语句。
创建一个c_choose.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri=