9. JSP - 核心标签库
2021/6/2 10:22:18
本文主要是介绍9. JSP - 核心标签库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JSTL核心标签库简介
JSTL中的核心标签库主要用于完成基本的逻辑运算,在开发中使用较多。
在开发前导入相关jar包之后,还需要在页面中通过 taglib 指令将标签库导入:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
这是核心库的头 定死了的啊 阿帕奇规定这样使用的:
我们开始讲解 核心库中有哪些标签:
c:out标签
用于在页面上输出 EL 表达式的值,该标签不常使用,因为不使用该标签也能够在页面上输出EL表达式。
例:
<%@ 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("name", "bihu"); %> 为什么不经常用? 因为直接el表达式即可输出: <br> <br> 1. el表达式直接输出: ${ name } <br> 2. 用c:out 标签: <c:out value="name : ${ name }"></c:out> </body> </html>
所以,,,为什么不经常用...
c:catch标签
当有异常发生时,用于捕获异常。相当于 try-catch 中的 catch 代码块,该标签中只有一个属性 var,是捕获到的异常对象,名称可以自定义。该标签不常用,一般不会在页面中显示异常信息。
<c:catch var="e"> ${ pageContext.name } <%-- 捕获的是这个异常! 就像 try - catch 一样 这里故意给个异常给他啊! --%> </c:catch> <%-- 然后我们将其捕获的异常栈输出: --%> <br> 捕获的异常: ${ e.message }
一般会用 调试可能用一下 。
c:if标签
该标签主要用于条件判断。
- test:判断的条件。若为 true,则执行标签体中的内容,否则不执行。
- var:存储 test 的判断结果。不常用。
- scope:存储 test 判断结果的变量的存放范围。不常用。
三个属性 先看代码:
<% request.setAttribute("person", "user"); %> <c:if test="${ person == 'user' }" var="flag" scope="request"> 管理员 <br> var : ${ flag } <br> </c:if>
至于 scope 我也不知道 反正不常用 ... 晚点问老师
:choose标签
实现多分支判断。类似于 switch-case 语句。一个 标签中可以包含多个与一个。
这玩意和switch 差不多:
例:
<% request.setAttribute("hobby", "Game"); %> <c:choose> <c:when test="${ hobby == 'Muisc' }"> 我喜欢听音乐 </c:when> <c:when test="${ hobby == 'football' }"> 我喜欢踢足球 </c:when> <c:when test="${ hobby == 'Game' }"> 我喜欢打游戏 </c:when> <c:when test="${ hobby == 'Basketball' }"> 我喜欢打篮球 </c:when> </c:choose>
c:forEach标签
该标签用于循环遍历数组、集合(List、Set、Map),实际开发中使用较多。
各遍历都在里面:
--------------------------c:forEach标签------------------------------------- <br> -------------1.遍历数组 <% Object[] arr = {"北京","上海","广州","深圳"}; request.setAttribute("city", arr); %> <br> <c:forEach items="${ city }" var="city_temp"> ${ city_temp } <br> <%-- 开始遍历 --%> </c:forEach> <br> -------------2.遍历 List <% List<String> list = new ArrayList(); list.add("张三"); list.add("李四"); list.add("王五"); list.add("赵6"); request.setAttribute("person", list); %> <br> <c:forEach items="${ person }" var="person_temp"> ${ person_temp } <br> <%-- 开始遍历 --%> </c:forEach> <br> -------------3.遍历 Set <% Set<String> set = new HashSet(); set.add("1 a"); set.add("2 b"); set.add("3 c"); set.add("4 d"); request.setAttribute("code", set); %> <br> <c:forEach items="${ code }" var="code_temp"> ${ code_temp } <br> <%-- 开始遍历 --%> </c:forEach> -------------4.遍历 Map <% Map<Integer,String> map = new HashMap(); map.put(1, "信息工程学院"); map.put(2, "现代教育学院"); map.put(3, "机电技术学院"); map.put(4, "艺术学院"); map.put(5, "经济管理学院"); request.setAttribute("college", map); %> <br> <c:forEach items="${ college }" var="college_temp"> ${ college_temp.key } : ${ college_temp.value } <br> <%-- 开始遍历 --%> </c:forEach>
特别注意 Map 的遍历 如果你不以 xxx.key xxx.value 形式来的话 如果直接输出会输出 key=value 这种形式
c:forEach标签 还有几个标签要讲解: begin 、end 和 step 和 varStatus
begin 和 end 是开始和结束的意思 在这个标签中 他作用是 从哪里开始遍历 到哪里结束遍历 ,但是 都包括了 begin 和 end 【即包括自己】
step 迈步的意思 他的作用是 迈开遍历 如果为1 那就以一步走的方式遍历【即全部都遍历】 如果为2 那就以两步走的方式遍历: 例如: 有 1 2 3 4 5 6 我的step为2 那么我遍历的元素是:
1 3 5 , 所以这个你要认真看下就懂了
varStatus 是用来存储状态的,下图讲解了:【图源自于网上 满好的.】
所以 你就可以 varStatus.xxxx 使用了:
例: 用list做数据库 创建一个表格 规定 1 3 5 、 2 4 5 行 不同颜色:
<%-- 最好用 类 的方式存储! ! 这里演示就用String 和 Integer 了 !!! --%> <% Map<String,Integer> table = new HashMap(); table.put("雷军", 32); table.put("柳传志", 29); table.put("马云", 33); table.put("马化腾", 41); table.put("陈欧", 22); request.setAttribute("person", table); %> <table border="1"> <tr> <td>序号</td> <td>姓名</td> <td>年龄</td> </tr> <c:forEach items="${ person }" var="person_temp" varStatus="i"> <tr style="${ i.index % 2 == 0 ? 'background-color:#7bbfea' :'background-color:#007947' }"> <td> ${ i.index } </td> <td> ${person_temp.key } </td> <td> ${person_temp.value } </td> </tr> </c:forEach> </table>
代码也写到了 集合哪里最好存储类 不然的话你只能存储就那么两个 如果是类,就可以 类.xx 这样代码健壮性和很方便 快捷 ,因为foreach遍历的是每个元素。。。。
关于 varStatus 图标的属性 自己多去使用即可!
图:
完全代码:
<%@page import="java.util.HashMap"%> <%@page import="java.util.Map"%> <%@page import="java.util.Set"%> <%@page import="java.util.HashSet"%> <%@page import="java.util.List"%> <%@page import="java.util.ArrayList"%> <%@ 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> <style> table{ border-collapse:collapse; } </style> </head> <body> <!-- --------------------------c:out标签------------------------------------- --> <br> <br> <hr> <% request.setAttribute("name", "bihu"); %> 为什么不经常用? 因为直接el表达式即可输出: <br> <br> 1. el表达式直接输出: ${ name } <br> 2. 用c:out 标签: <c:out value="name : ${ name }"></c:out> <hr> --------------------------c:catch标签------------------------------------- <c:catch var="e"> ${ pageContext.name } <%-- 捕获的是这个异常! 就像 try - catch 一样 这里故意给个异常给他啊! --%> </c:catch> <%-- 然后我们将其捕获的异常栈输出: --%> <br> 捕获的异常: ${ e.message } <hr> --------------------------c:if标签------------------------------------- <br> <br> <% request.setAttribute("person", "user"); %> <c:if test="${ person == 'user' }" var="flag" scope="request"> 管理员 <br> var : ${ flag } <br> </c:if> --------------------------c:choose标签------------------------------------- <br> <% request.setAttribute("hobby", "Game"); %> <c:choose> <c:when test="${ hobby == 'Muisc' }"> 我喜欢听音乐 </c:when> <c:when test="${ hobby == 'football' }"> 我喜欢踢足球 </c:when> <c:when test="${ hobby == 'Game' }"> 我喜欢打游戏 </c:when> <c:when test="${ hobby == 'Basketball' }"> 我喜欢打篮球 </c:when> </c:choose> <br> --------------------------c:forEach标签------------------------------------- <br> -------------1.遍历数组 <% Object[] arr = {"北京","上海","广州","深圳"}; request.setAttribute("city", arr); %> <br> <c:forEach items="${ city }" var="city_temp"> ${ city_temp } <br> <%-- 开始遍历 --%> </c:forEach> <br> -------------2.遍历 List <% List<String> list = new ArrayList(); list.add("张三"); list.add("李四"); list.add("王五"); list.add("赵6"); request.setAttribute("person", list); %> <br> <c:forEach items="${ person }" var="person_temp"> ${ person_temp } <br> <%-- 开始遍历 --%> </c:forEach> <br> -------------3.遍历 Set <% Set<String> set = new HashSet(); set.add("1 a"); set.add("2 b"); set.add("3 c"); set.add("4 d"); request.setAttribute("code", set); %> <br> <c:forEach items="${ code }" var="code_temp"> ${ code_temp } <br> <%-- 开始遍历 --%> </c:forEach> -------------4.遍历 Map <% Map<Integer,String> map = new HashMap(); map.put(1, "信息工程学院"); map.put(2, "现代教育学院"); map.put(3, "机电技术学院"); map.put(4, "艺术学院"); map.put(5, "经济管理学院"); request.setAttribute("college", map); %> <br> <c:forEach items="${ college }" var="college_temp"> ${ college_temp.key } : ${ college_temp.value } <br> <%-- 开始遍历 --%> </c:forEach> <br> ------------------------------------制作表格 <%-- 最好用 类 的方式存储! ! 这里演示就用String 和 Integer 了 !!! --%> <% Map<String,Integer> table = new HashMap(); table.put("雷军", 32); table.put("柳传志", 29); table.put("马云", 33); table.put("马化腾", 41); table.put("陈欧", 22); request.setAttribute("person", table); %> <table border="1"> <tr> <td>序号</td> <td>姓名</td> <td>年龄</td> </tr> <c:forEach items="${ person }" var="person_temp" varStatus="i"> <tr style="${ i.index % 2 == 0 ? 'background-color:#7bbfea' :'background-color:#007947' }"> <td> ${ i.index } </td> <td> ${person_temp.key } </td> <td> ${person_temp.value } </td> </tr> </c:forEach> </table> </body> </html>
说明: 这里为什么一直用request这个域存储属性? 随便的啊 这里图方便 你可以用其他的,比如pageContext 、 session 、 什么什么都可以 , 你喜欢。
这里就说那么多常用的 还有很多自己去百度....
完。
这篇关于9. JSP - 核心标签库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Vue CLI教程:新手入门与实践指南
- 2024-11-26Vue3+Vite教程:新手入门到项目实践
- 2024-11-26Vue3阿里系UI组件教程:新手入门指南
- 2024-11-26Vue3的阿里系UI组件教程:简单易懂的入门指南
- 2024-11-26Vue3公共组件教程:零基础入门到实战
- 2024-11-26Vue3公共组件教程:入门与实践指南
- 2024-11-26Vue3核心功能响应式变量教程:轻松入门与实践
- 2024-11-26Vue3核心功能响应式变量教程:新手快速入门
- 2024-11-26Vue3教程:新手入门与初级实践指南
- 2024-11-26集成Ant Design Vue的图标项目实战