[应用篇]第四篇 JSTL之C标签介绍.md
wxin55 2024-10-29 17:25 9 浏览 0 评论
粗体为必须掌握部分
表达式控制标签:out、set、remove、catch
流程控制标签:if、choose、when、otherwise
循环标签:forEach、forTokens
URL操作标签:import、url、redirect
只用JSTL需要大家引入两个JAR包 jstl-1.2.jar和standard-1.1.2.jar,如果是MyEclipse会自带,我们还是使用去下载的
使用标签时,一定要在jsp文件头加入以下代码:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
1. <c:out>标签
作用: 用来显示数据对象(字符串、表达式)的内容或结果
使用Java脚本的方式为:<% out.println("hello") %>
<%=表达式 %>
使用JSTL标签:,例如:
运行效果:
2. <c:set>标签
作用: 用于将变量存取于** JSP范围[pageContext/request/session/appliaction]中或JavaBean 属性**中。下面的例子中假设已经有User.java 这个类文件。
一共有四种语法格式,
前两种是给 jsp的范围 变量赋值
后两种是给 javaBean 变量赋值
运行效果:
真心用的比较少,但是还是蛮好用的,一般情况下需要配合使用的是EL表达式
3. <c:remove>标签
放弃吧 , 主要用来从指定的** jsp 范围[pageContext/request/session/application]**内移除指定的变量。
使用类似,下面只给出语法:
<c:remove var="变量名" [scope="page|request|session|application"]></c:remove>
自己测试吧,存在即是合理的,希望谁知道什么时候能用到呢?
4. <c:catch>标签
****放弃吧**** 用来处理 JSP 页面中产生的异常,并存储异常信息,好久都没有见过了,渐渐的备遗忘了
<c:catch var="name1"> 容易产生异常的代码</c:catch>
5. <c:if>标签 [重中之重]
表达式: <c:if test="条件1" var="name" [scope="page|request|session|application"]></c:if>
代码截图:
注意比较的中文比较的时候使用的单引号,如果是数字自己比较一下就可以了!
运行效果:
6. <c:choose> <c:when> <c:otherwise>标签 掌握
相当于switch语法,三个标签通常嵌套使用,第一个标签在最外层,最后一个标签在嵌套中只能使用一次
自己测试一下,特别注意:test->一定要配合使用EL表达式
7. <c:forEach>遍历标签 [重中之重]
作用: 该标签根据循环条件遍历集合 Collection 中的元素。
语法:<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>
属性解释:
var 用于存储从集合中取出的元素;
items 指定要遍历的集合;
varStatus 用于存放集合中元素的信息。
step 步长
begin 从什么位置索引开始
end 到什么位置结束,不能越界啊
varStatus 一共有4种状态属性,下面例子中说明:
代码示例:
这个必须要记住啊,一定要记住啊!我们可以给MyEclipse或者Eclipse安装插件,方便我们的使用!
运行效果:
8. <c:forTokens>
作用: 用于浏览字符串,并根据指定的字符串截取字符串 这个属于技巧,需要大家灵活掌握
语法: <c:forTokens items="stringOfTokens" delims="delimiters" [var="name" begin="begin" end="end" step="len" varStatus="statusName"]></c:forTokens>
代码示例:
运行效果:
9. URL 操作标签
把其他静态或动态文件包含到 JSP 页面
标签名称 | 描述 |
---|---|
<c:import> | 可以包含其他web应用中的文件,甚至是网络上的资源 |
<jsp:include> | 只能包含同一个web应用中的文件 |
<c:import> 标签说明
语法:
<c:import url="url" [context="context"] [value="value"] [scope="..."] [charEncoding="encoding"]></c:import>
<c:import url="url" varReader="name" [context="context"][charEncoding="encoding"]></c:import>
中括号代表是可选择的属性,可以不写
URL路径有个绝对路径和相对路径
-** 相对路径**:<c:import url="sxt.txt"/>
那么,shxt.txt 必须与当前文件放在同一个文件目录下。
重点解释
如果以"/"开头,表示存放在应用程序的根目录下,如Tomcat应用程序的根目录文件夹为 webapps。
如果要访问webapps管理文件夹中的其他Web应用,就要用context属性。
例如访问demoProj下的index.jsp,则:
<c:import url="/index.jsp" context="/demoProj"/>
<c:redirect> 标签说明
作用: 该标签用来实现请求的重定向
对用户输入的用户名和密码进行验证,不成功则重定向到登录页面。或者实现Web应用不同模块之间的衔接
语法:
<c:redirect url="url" [context="context"]/>
或:
<c:redirect url="url" [context="context"]> <c:param name="name1" value="value1"></c:redirect>
代码示例:
<c:redirect url="http://127.0.0.1:8001"> <c:param name="uname">shxt</c:param> <c:param name="password">hanpang8983</c:param></c:redirect>
地址栏的结果为:
http://127.0.0.1:8080/?uname=shxt&password=hanpang8983
<c:url> 标签说明
用于动态生成一个 String 类型的URL,可以同上个标签共同使用,也可以使用HTML的
<a>
标签实验超链接。
语法:
<c:url value="value" [var="name"] [scope="..."] [context="context"]> <c:param name="name1" value="value1"></c:url>
或:
<c:url value="value" [var="name"] [scope="..."] [context="context"]/>
代码示例:
<c:url value="http://127.0.0.1:8001" var="url" scope="session"</c:url><a href="${url}">Tomcat首页</a>
相关推荐
- ES6中 Promise的使用场景?(es6promise用法例子)
-
一、介绍Promise,译为承诺,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大在以往我们如果处理多层异步操作,我们往往会像下面那样编写我们的代码doSomething(f...
- JavaScript 对 Promise 并发的处理方法
-
Promise对象代表一个未来的值,它有三种状态:pending待定,这是Promise的初始状态,它可能成功,也可能失败,前途未卜fulfilled已完成,这是一种成功的状态,此时可以获取...
- Promise的九大方法(promise的实例方法)
-
1、promise.resolv静态方法Promise.resolve(value)可以认为是newPromise方法的语法糖,比如Promise.resolve(42)可以认为是以下代码的语...
- 360前端一面~面试题解析(360前端开发面试题)
-
1.组件库按需加载怎么做的,具体打包配了什么-按需加载实现:借助打包工具(如Webpack的require.context或ES模块动态导入),在使用组件时才引入对应的代码。例如在V...
- 前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?
-
Promise的finally方法是一个非常有用的工具,它无论Promise是成功(fulfilled)还是失败(rejected)都会执行,且不改变Promise的最终结果。它的实现原...
- 最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式
-
看了全网手写Promise的,大部分对于新手还是比较难理解的,其中几个比较难的点:状态还未改变时通过发布订阅模式去收集事件实例化的时候通过调用构造函数里传出来的方法去修改类里面的状态,这个叫Re...
- 前端分享-Promise可以中途取消啦(promise可以取消吗)
-
传统Promise就像一台需要手动组装的设备,每次使用都要重新接线。而Promise.withResolvers的出现,相当于给开发者发了一个智能遥控器,可以随时随地控制异步操作。它解决了三大...
- 手写 Promise(手写输入法 中文)
-
前言都2020年了,Promise大家肯定都在用了,但是估计很多人对其原理还是一知半解,今天就让我们一起实现一个符合PromiseA+规范的Promise。附PromiseA+规范地址...
- 什么是 Promise.allSettled()!新手老手都要会?
-
Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的pr...
- 前端面试-关于Promise解析与高频面试题示范
-
Promise是啥,直接上图:Promise就是处理异步函数的API,它可以包裹一个异步函数,在异步函数完成时抛出完成状态,让代码结束远古时无限回掉的窘境。配合async/await语法糖,可...
- 宇宙厂:为什么前端离不开 Promise.withResolvers() ?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.为什么需要Promise.with...
- Promise 新增了一个超实用的 API!
-
在JavaScript的世界里,Promise一直是处理异步操作的神器。而现在,随着ES2025的发布,Promise又迎来了一个超实用的新成员——Promise.try()!这个新方法简...
- 一次搞懂 Promise 异步处理(promise 异步顺序执行)
-
PromisePromise就像这个词的表面意识一样,表示一种承诺、许诺,会在后面给出一个结果,成功或者失败。现在已经成为了主流的异步编程的操作方式,写进了标准里面。状态Promise有且仅有...
- Promise 核心机制详解(promise机制的实现原理)
-
一、Promise的核心状态机Promise本质上是一个状态机,其行为由内部状态严格管控。每个Promise实例在创建时处于Pending(等待)状态,此时异步操作尚未完成。当异步操作成功...
- javascript——Promise(js实现promise)
-
1.PromiseES6开始支持,Promise对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示。简单说就是处理异步请求的。之所以叫Promise,就是我承诺,如果成功则怎么处理,失败怎...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- ES6中 Promise的使用场景?(es6promise用法例子)
- JavaScript 对 Promise 并发的处理方法
- Promise的九大方法(promise的实例方法)
- 360前端一面~面试题解析(360前端开发面试题)
- 前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?
- 最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式
- 前端分享-Promise可以中途取消啦(promise可以取消吗)
- 手写 Promise(手写输入法 中文)
- 什么是 Promise.allSettled()!新手老手都要会?
- 前端面试-关于Promise解析与高频面试题示范
- 标签列表
-
- hive行转列函数 (63)
- sourcemap文件是什么 (54)
- display none 隐藏后怎么显示 (56)
- 共享锁和排他锁的区别 (51)
- httpservletrequest 获取参数 (64)
- jstl包 (64)
- qsharedmemory (50)
- watch computed (53)
- java中switch (68)
- date.now (55)
- git-bash (56)
- 盒子垂直居中 (68)
- npm是什么命令 (62)
- python中+=代表什么 (70)
- fsimage (51)
- nginx break (61)
- mysql分区表的优缺点 (53)
- centos7切换到图形界面 (55)
- 前端深拷贝 (62)
- kmp模式匹配算法 (57)
- jsjson字符串转json对象 (53)
- jdbc connection (61)
- javascript字符串转换为数字 (54)
- mybatis 使用 (73)
- 安装mysql数据库 (55)