Web---JSP---JSTL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34928644/article/details/82634377

JSTL简介

  • JSTL(Java Standard Tag Library) –Java标准标签库。
  • SUN公司制定的一套标准标签库的规范。
  • JSTL标签库,是由一些Java类组成的。

JSTL组成

  • JSTL –Core 核心标签库。 - 这是本部分的重点
  • JSTL – I18N - 国际化标签库。Internationalization-    I18N
  • JSTL – SQL – 数据库操作标签(有悖于MVC设计模式不用不讲)
  • JSTL Functions – 函数库。
  • JSTL XML ,对XML的操作(SQL标签)
  • jstl-1.2.jar包的META-INF目录中,保存着各种tld文件的版本。请查看。

JSTL核心标签库

使用JSTL核心标签:

  • 如果你的Web项目是基于JavaEE2.5或以上的。可以在你项目的任意页面上通过<%@ taglib 指令使用JSTL的核心标签库。

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

uri是引用标签库的资源定位符,并不代表一个实际的地址。

Prefix是自定义的前缀。

  • 如果你的项目是JavaEE2.5以下的项目,必须在在你项目中的lib目录下,存在以下两个jar文件为:

Jstl.jarstandard.jar

在上面的包中,存在着jstltld文件,用于描述jstl标签的属性、名称、资源等信息。程序就是通过这个tld文件找到相关java类以供运行的。

然后再在任意的JSP页面通过指令导入jstl.

JSTL-Core一共包含以下几个子标签

代码演示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSTL技术演示1</title>
	</head>
	<body>
		1.c:out<br>
		<% pageContext.setAttribute("name", "Alice"); %>
		<c:out value="${name}"></c:out> ## ${name} ----发现好像c:out与EL表达式没什么区别
		<br>
		<c:out value="<font color='red' >湖南益阳</font>"></c:out> ## ${"<font color='red'>湖南益阳</font>" }
		-----区别出来了,因为c:out的escapeXml属性默认为true 该属性为 true时可以对一些特殊符号进行转换
		而EL表达式只能原样输出。
		<hr>
		2.c:set <br>
		2.1 给基本数据类型变量设置值<br>
		<c:set var="num" value="100" />
		${num+100} ##  ${num+0.5} <br>
		2.2 给JavaBean设置值<br>
		<jsp:useBean id="user" class="cn.hncu.domain.User">
			<jsp:setProperty property="name" name="user" value="Jack" />
			<jsp:setProperty property="age" name="user" value="22" />
		</jsp:useBean>
		${user.name},${user.age}<br>
		<c:set target="${user}" property="name" value="Alice" />
		name改为Alice: ${user.name},${user.age}<br>
		<hr>
		3.c:remove <br>
		<c:remove var="num"/>
		${empty num}
		<hr>
		4.c:if <br>
		<c:if test="${empty num}">
			没有num属性
		</c:if>
		<br>
		两个c:if组成if,else语句:
		<c:set var="userName" value="Tom" scope="session" />
		<c:if test="${empty sessionScope.userName}" var="boo" scope="page">
			用户名不存在
		</c:if>
		<br>
		<%-- 
			<!-- 当然也可以这样 -->
			<c:if test="${!empty sessionScope.userName}">
		 --%>
		<c:if test="${!boo}">
			你好,${sessionScope.userName}
		</c:if>
		<hr>
		5.c:choose,c:when,c:otherwise 相当于 if,else if,else<br>
		<c:set var="score" value="85" />
		<c:choose>
			<c:when test="${score>=90}">优秀</c:when>
			<c:when test="${score>=80}">良好</c:when>
			<c:when test="${score>=70}">一般</c:when>
			<c:when test="${score>=60}">及格</c:when>
			<c:otherwise>不及格</c:otherwise>
		</c:choose>
		
	</body>
</html>
<%@page import="cn.hncu.domain.Car"%>
<%@page import="cn.hncu.domain.User"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSTL技术演示2</title>
	</head>
	<body>
		6.c:forEach --- 非常重要   <br>
		6.1 普通for循环   <br>
		<c:set var="sum" value="0" />
		<c:forEach begin="1" end="10" step="1" var="i">
			<c:set var="sum" value="${sum+i}" />
		</c:forEach>
		1+2+...+10=${sum} <br>
		6.2 增强for循环 <br>
		&emsp;&emsp;6.2.1 遍历数组 <br>
		<%
			String[] strs = {"aa","bb","张三","cc"};
			//注意,一定要放到容器中,否则无效
			pageContext.setAttribute("strs", strs);
		%>
		<c:forEach items="${strs}" var="str" varStatus="vs">
			&emsp;&emsp;&emsp;&emsp;下标:${vs.index},第${vs.count}个,值:${str}<br>
		</c:forEach>
		&emsp;&emsp;6.2.2 遍历List <br>
		<%
			List<Object> list = new ArrayList<Object>();
			list.add(100);
			list.add("Jack");
			list.add("abc");
			//注意,一定要放到容器中,否则无效
			pageContext.setAttribute("list", list);
		%>
		<c:forEach items="${list}" var="obj" varStatus="vs">
			&emsp;&emsp;&emsp;&emsp;下标:${vs.index},第${vs.count}个,值:${obj}<br>
		</c:forEach>
		&emsp;&emsp;6.2.3 遍历Map <br>
		<%
			Map<String,Object> map = new HashMap<String,Object>();
			map.put("name", "Bob");
			map.put("age", 18);
			map.put("id", "u001");
			//注意,一定要放到容器中,否则无效
			pageContext.setAttribute("map", map);
		%>
		<c:forEach items="${map}" var="entry" >
			&emsp;&emsp;&emsp;&emsp;key:${entry.key},value:${entry.value}<br>
		</c:forEach>
		&emsp;&emsp;6.2.4 遍历JavaBean的List <br>
		<%
			List<Car> cars = new ArrayList<Car>();
			cars.add( new Car("c001","宝马") );
			cars.add( new Car("c002","奔驰") );
			cars.add( new Car("c003","奥迪") );
			pageContext.setAttribute("cars", cars);
		%>
		<c:forEach items="${cars}" var="car">
			&emsp;&emsp;&emsp;&emsp;${car.no},${car.name} <br>
		</c:forEach>
		<hr>
		7. c:forTokens标签: 字符串拆分 <br>
		<c:forTokens items="a,bc,def,xx x" delims="," var="str">
			${str} #
		</c:forTokens>
		<hr>
		8. c:import标签: 动态导入 <br>
		<c:import url="import.jsp"  charEncoding="utf-8"  />
		<hr>
		9. c:url标签: 重写url, 以后开发时的后台地址都用这种方式写,非常保险,也简单(斜杠代表项目根目录)! <br>
		<c:url value="/jsps/jstl2.jsp" />
		<hr>
		10. c:redirect标签: 重定向。<br>
		注释了,不然当前也就显示不了了。
		<%-- 
		<c:redirect url="/" />
		--%>
		<div style="height: 400px"></div>
	</body>
</html>

完整代码

猜你喜欢

转载自blog.csdn.net/qq_34928644/article/details/82634377
今日推荐