• Web阶段:第十四章:JSTL标签库


    作者:java_wxid

    JSTL 标签库
    JSTL标签库 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
    EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。

    JSTL由五个不同功能的标签库组成。
    功能范围 URI 前缀

    核心标签库--重点	http://java.sun.com/jsp/jstl/core	c
    格式化	http://java.sun.com/jsp/jstl/fmt		fmt
    函数	http://java.sun.com/jsp/jstl/functions		fn
    数据库(不使用)	http://java.sun.com/jsp/jstl/sql	sql
    XML(不使用)	http://java.sun.com/jsp/jstl/xml	x
    

    在jsp标签库中使用taglib指令引入标签库
    CORE 标签库
    <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
    XML 标签库
    <%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %>
    FMT 标签库
    <%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
    SQL 标签库
    <%@ taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql” %>
    FUNCTIONS 标签库
    <%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %>

    JSTL标签库的使用步骤
    1、导入jstl标签库的jar包
    taglibs-standard-impl-1.2.1.jar
    taglibs-standard-spec-1.2.1.jar

    2、使用taglib指令引入你需要的标签库
    <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

    core核心库使用
    <c:set />
    1、可以往域中保存数据
    2、可以修改域中bean对象的属性或Map集合的某个key的值

    <body>
    <%-- i.<c:set /> --%>	
    		<%--
    			域对象.setAttriubte(key,value);
    				scope 属性设置使用哪个域对象			page,request,session,application
    				var 就是保存的key
    				value 属性设置你要保存的值
    		--%>
    		<!-- 1、可以往域中保存数据 -->
    		保存之前:${ requestScope.key1 }<br/>
    		<c:set scope="request" var="key1" value="value1"></c:set>
    		保存之后:${ requestScope.key1 }<br/>
    		<hr/>
    		<%
    			Map<String,Object> map = new HashMap<String,Object>();
    			map.put("aa", "修改之前");
    			map.put("bb", "bbValue");
    			request.setAttribute("map", map);
    		%>
    	<%-- 2、可以修改域中bean对象的属性或Map集合的某个key的值
    				bean对象.setXxxx(新值);		Xxx是你要修改的属性
    				map对象.put(key,新值);		
    			
    			target属性表示你要修改哪个bean对象,或是哪个map集合
    			property属性设置你要修改的是哪个属性,或是map集合的哪个key
    			value	属性设置你的新值
    	 --%>
    		修改之前:${ requestScope.map }<br/>
    		<c:set target="${ requestScope.map }" property="aa" value="修改之后"></c:set>
    		修改之后:${ requestScope.map }<br/>		
    	</body>
    

    <c:if />
    if标签可以用来做判断使用。

    	<%-- if标签做if判断,
    			test 属性是if判断的表达式(使用EL表达式输出真假值)
    	 --%>
    	<c:if test="${ 12 == 12 }">
    		<h1>12等于12啦啦啦……</h1>
    	</c:if>
    

    <c:choose> <c:when> <c:otherwise>标签
    跟switch 、case、default,基本一样。

    <%
    			request.setAttribute("height", 136);
    		%>
    		<%--
    			choose。when。otherwise需要注意两个点:
    				1、在这里标签内不能使用html注释 
    				2、when标签的父标签一定要是choose标签
    		 --%>
    		<c:choose><%-- switch --%>
    			<%-- when 表示一种条件情况,相当于case --%>
    			<c:when test="${ requestScope.height >= 190 }">
    				<h1>老高老高啦啦啦……</h1>
    			</c:when>
    			<c:when test="${ requestScope.height >= 180 }">
    				<h1>很高很高啦啦啦……</h1>
    			</c:when>
    			<c:when test="${ requestScope.height >= 170 }">
    				<h1>好矮好矮啦啦啦……</h1>
    			</c:when>
    			<c:when test="${ requestScope.height >= 160 }">
    				<h1>二等那啥啦啦啦……</h1>
    			</c:when>
    			<c:otherwise><%-- default --%>
    				<c:choose>
    					<c:when test="${ requestScope.height >= 150 }">
    						<h1>150</h1>
    					</c:when>
    					<c:when test="${ requestScope.height >= 140 }">
    						<h1>140</h1>
    					</c:when>
    					<c:when test="${ requestScope.height >= 130 }">
    						<h1>130</h1>
    					</c:when>
    				</c:choose>
    			</c:otherwise>
    		</c:choose>
    

    <c:url />
    1、它可以生成一个url地址,直接输出
    2、可以把生成的url地址保存到某个域中

    <!-- 		1、它可以生成一个url地址,直接输出
    				value 是你的访问的资源路径
    				context 是你所在的工程路径,默认是当前工程
     -->
    		<c:url value="/f.jsp" context="/abc">
    			<c:param name="username" value="wzg168"></c:param>
    			<c:param name="password" value="123456"></c:param>
    		</c:url>
    		<br/>
    <!-- 		2、可以把生成的url地址保存到某个域中 
    				域对象.setAttribute(key,地址);
    				session.setAttribute(url,地址);
    -->
    		<c:url value="/f.jsp" context="/abc" scope="session" var="url">
    			<c:param name="username" value="wzg168"></c:param>
    			<c:param name="password" value="123456"></c:param>
    		</c:url>
    Session域中保存的地址是:${ sessionScope.url }
    

    <c:forEach />
    forEach标签做遍历操作

    1.遍历1到10,输出
    2.遍历Object数组
    3.遍历List集合—list中存放 Person类,有属性:编号,用户名,密码,年龄,电话信息
    4.遍历Map集合

    测试代码:

    <%@page import="java.util.HashMap"%>
    <%@page import="java.util.Map"%>
    <%@page import="com.atguigu.pojo.Student"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="java.util.List"%>
    <%@ 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 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>Insert title here</title>
    <style type="text/css">
    	table{
    		 500px;
    		border: 1px solid red;
    		border-collapse: collapse;
    	}
    	th , td{
    		border: 1px solid red;
    	}
    </style>
    	</head>
    	<body>
    <!-- 		1.遍历1到10,输出
    				begin 遍历开始的索引
    				end   遍历结束的索引
    				var 是当前正在遍历到的数据
     -->
    		<c:forEach begin="1" end="10" var="i">
    			${ i }
    		</c:forEach>
    		<hr/>
    
    
    <!-- 2.遍历Object数组 -->
    		<%
    			request.setAttribute("arr", new String[]{"aaaa","bbbb","cccc"});
    		%>
    		<!-- 
    				items 设置你要遍历的集合(数据源)
    				var 是当前正在遍历到的数据
    		 -->
    		<c:forEach items="${ requestScope.arr }" var="item">
    			${ item }<br/>
    		</c:forEach>
    		<hr/>
    
    
    <!-- 3.遍历List集合---list中存放 Student类,有属性:编号,用户名,密码,年龄,电话信息 -->
    		<%
    			List<Student> list = new ArrayList<Student>();
    			for (int i = 0; i < 10; i++) {
    				list.add(new Student(i,"name"+i,"pass"+i,18+i,"phone"+i));
    			}
    			request.setAttribute("list", list);
    		%>
    		<table>
    			<tr>
    				<th>编号</th>
    				<th>用户名</th>
    				<th>密码</th>
    				<th>年龄</th>
    				<th>电话</th>
    				<th>操作</th>
    			</tr>
    			<!-- 
    				step	是设置步长,每次遍历完,索引怎么移动,默认是1
    				varStatus	是当前遍历到的数据的状态对象
    			 -->
    			<c:forEach begin="1" end="7" items="${ requestScope.list }" step="1" var="stu" varStatus="status">
    				<c:if test="${ status.count == 3 }">
    					<tr style="background-color: green;">
    				</c:if>
    				<c:if test="${ status.count != 3 }">
    					<tr>
    				</c:if>
    					<td>${ stu.id }</td>
    					<td>${ stu.username }</td>
    					<td>${ stu.password }</td>
    					<td>${ stu.age }</td>
    					<td>${ stu.phone }</td>
    					<td>${ status.step }</td>
    				</tr>
    			</c:forEach>
    		</table>
    		<hr/>
    <!-- 4.遍历Map集合 -->
    		<%
    			Map<String,Object> map = new HashMap<String,Object>();
    			map.put("key1", "value1");
    			map.put("key2", "value2");
    			map.put("key3", "value3");
    			request.setAttribute("map", map);
    		%>
    		<c:forEach items="${ requestScope.map }" var="entry">
    			${ entry.value }<br/>
    		</c:forEach>
    	</body>
    </html>
    

    在这里插入图片描述

  • 相关阅读:
    mina2中的session
    mina2的processor
    Spring Cloud 各组件调优参数
    可重入锁
    微服务架构的基础框架选择:Spring Cloud还是Dubbo?
    服务注册发现consul之五:Consul移除失效服务的正确姿势
    Spring Cloud构建微服务架构(七)消息总线
    springboot+swagger
    Spring Cloud config之二:Spring cloud config Server源码分析
    Spring Cloud config之一:分布式配置中心config server介绍
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812105.html
Copyright © 2020-2023  润新知