JSTL+EL JSP常用标签

编程入门 行业动态 更新时间:2024-10-26 08:20:41

JSTL+EL  JSP<a href=https://www.elefans.com/category/jswz/34/1769776.html style=常用标签"/>

JSTL+EL JSP常用标签

JSP常用标签的配置及使用JSTL

什么是JSTL?
—JSTL是java中的一个定制标记库集

为什么要使用JSTL?
—实现了JSP页面中的代码复用:基于标签库原理,重复率较高的代码块支持复用,提高效率

—书写JSP页面时可读性更强:长得很像xml,方便前端查看和参与开发。

实际演示:

JSTL环境搭建

由于JSTL标签和Servet及JSP页面有着比较严格的版本对应关系,版本对应不正确很容易抛出异常,所以我们采用:

下载配置Tomcat不再赘述

下载JSTL1.1.2

以此寻找下面的路径
jakarta/taglibs/standard/binaries/ 找到对应版本的zip包进行下载

创建eclipse web project工程

把lib下的两个文件直接粘贴到WEB-INF目录下的lib目录下

选中两个文件,右键

配置Tomcat7.0 Server

运行项目,保证项目可以正常运行。

第一个JSTL小程序

导入标签库

<c:out>//输出标签

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><c:out value="this is myFirst JSTLDemo"> </c:out>
</body>
</html>

JSTL的好帮手-EL表达式

JSTL标签的四大分类及JSTL函数

*核心标签
——最常用,最重要
*格式化标签
SQL标签
XML标签

*JSTL函数
——常用

<c:out>中的value输出变量需要使用EL表达式

什么是EL表达式
全名为Expression Language
——经常与JSTL配合使用,使得JSP页面更直观,写法更简单
——普通写法:<%=session.getValue("name") %>
——EL表达式写法:<c:out value="${sessionScope.name}"/>

*EL表达式的格式
——使用“$”定界,内容包括在花括号“{}”中;${表达式}

“.”与”[]”运算符
*通常情况是通过 ${user.sex} ${user["sex"]}
*”[]”还可以用来进行集合元素中的定位 ${booklist[0].price}

*除2中情况外
——1.包含特殊字符:
* user.first−name错误的写法∗ <script type="math/tex" id="MathJax-Element-1">{user.first-name} 错误的写法 * </script>{user[“first-name”]} 正确的写法

——2.通过变量动态取值: user[param]∗param可以是nameorsexorothers∗“.”的写法是 <script type="math/tex" id="MathJax-Element-2">{user[param]} * param可以是name or sex or others * “.”的写法是</script>{suer.name}or ${user.sex}….需要具体的变量名
*

EL变量

按照从小到大的顺序查找变量,page->request->session->application

EL自动类型转换

要取得文本框中的输入,我们需要做类型转换

EL运算符

运算符允许对数据和文字进行组合以及比较。

验证匀速符(empty):对于验证数据特别有用。可以将empty和表达式配合使用,通过判断结果值(true or false)来判断表达式是否为NULL。

<body><c:out value="this is myFirst JSTLDemo"> </c:out><br><c:out value="${1+2}"> </c:out><br><%String username=""; request.setAttribute("username", username); %><c:out value="${empty username}"> </c:out><br>
</body>


JSTL核心标签的使用

JSTL标签之out标签

JSTL的核心标签库标签共13个,从功能上可以分为4类
——表达式控制标签:out set remove catch
——流程控制标签: if choose when otherwise
——循环标签:forEach forTokens
——URL操作标签:import url redirect

表达式控制标签out详解
out标签的用法?
——输出常量
*可在value属性中直接赋值
——输出变量
*变量不存在时可配合default属性输出默认值,还可通过escapeXml控制转义字符的输出方式

<body><!-- 使用out标签输出常量 --><c:out value="this is myFirst JSTLDemo"> </c:out><br><!-- 使用out标签输出变量 --><%session.setAttribute("name", "Jessica"); %><c:out value="${name}"></c:out><br><!-- 当变量不存在时,通过default不存在时输出默认值 --><c:out value="${name1}" default="error"></c:out><br><!-- 设置输出转义后的字符需要escapeXml设置成false --><c:out value="&ltout标签&gt" escapeXml="false"></c:out><br>
</body>

JSTL标签之set标签

*set标签的用法
——存值到scope中
可将值以变量形式存放在指定的范围中(2种方式)

<!-- 存值到scope中 --><c:set value="today" var="day" scope="session"></c:set><c:out value="${day}"></c:out><br><c:set  var="age" scope="application">eleven</c:set><c:out value="${age}"></c:out><br>

——存值到JavaBean的属性中
需要配合target属性指定对象并且通过property属性指定要赋值的对象中的哪个属性

代码示例:
新建Person.java类

package com.vishuo.test;public class Person {private String name2;private String age2;private String address;public String getName2() {return name2;}public void setName2(String name2) {this.name2 = name2;}public String getAge2() {return age2;}public void setAge2(String age2) {this.age2 = age2;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}

index.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib uri="" prefix="c"%><jsp:useBean id="person" class="com.vishuo.test.Person"></jsp:useBean><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><!-- 通过set标签向person中赋值 --><c:set target="${person}" property="name2" value="zhangsan"></c:set><c:out value="${person.name2}"></c:out> &nbsp;&nbsp;<br><c:set target="${person}" property="age2" value="26"></c:set><c:out value="${person.age2}"></c:out> &nbsp;&nbsp;<br><c:set target="${person}" property="address" value="北京市 朝阳区"></c:set><c:out value="${person.address}"></c:out><br><c:set target="${person}" property="name2" >zhangsan</c:set><c:out value="${person.name2}"></c:out> &nbsp;&nbsp;<br><c:set target="${person}" property="age2">26</c:set><c:out value="${person.age2}"></c:out> &nbsp;&nbsp;<br><c:set target="${person}" property="address" >北京市 朝阳区</c:set><c:out value="${person.address}"></c:out><br>
</body>
</html>

JSTL标签之remove标签

remove标签的用法
——remove掉某个变量
——var属性是必选
——scope属性是可选的
如果在不同的scope中存在相同名称的scope变量的话,我们就可以指定到具体的scope去remove

  <!-- remove标签的用法 --><c:set var="firstName" value="Lily"></c:set><c:out value="${firstName}"></c:out><br><c:set var="lastName" value="wang"></c:set><c:remove var="lastName"/><c:out value="${lastName}"></c:out><br>

JSTL标签之catch标签

*catch标签的用法
——catch标签中可以包含那些容易出错的JSTL标签(逻辑)

 <!-- catch标签的用法 --><c:catch var="error"><c:set target="aa" property="bb">asasa</c:set></c:catch><c:out value="${error}"></c:out><br>

JSTL标签之if标签

if标签的用法
——同程序中的if作用相同,用来实现分支条件控制
*test属性用于存放判断条件,一般使用EL表达式来编写
*var指定名称用来存放判断的结果类型为true或false
*scope用来存放var属性存放的范围

<c:if test="" var="" scope=""></c:if>
  <!-- if标签的用法 --><form action="index.jsp" method="post"><input type="text" name="score" value="${param.score}" /><input type="submit"></form><br><!-- 优秀score>=90 --><c:if test="${param.score>=90}" var="result" scope="application"><c:out value="恭喜,您的成绩是优秀!"></c:out></c:if><c:out value="${applicationScope.result}"></c:out><br>

JSTL标签之choose-when-otherwise标签

choose,when,otherwise标签的用法
——通常这三个标签被放在一起配合使用
——<c:choose>标签嵌套在<c:when><c:otherwise>标签的外面作为他们的父标签来使用
——其中choose和when标签也可以一起组合使用

综上所述通常有以下二种语法结构:
——用法一:3个标签同时使用

 <c:choose><c:when test="判断条件">......//业务逻辑1<c:when>......//业务逻辑2<c:otherwise>......//业务逻辑3</c:choose>
<form action="index.jsp" method="post"><input type="text" name="score" value="${param.score}" /> <input type="submit"  value="提交验证"/></form><br><!-- choose,when,otherwise --><c:choose><c:when test="${param.score>=90 && param.score<=100}"><c:out value="优秀"></c:out></c:when><c:when test="${param.score>=80 && param.score<90}"><c:out value="良好"></c:out></c:when><c:when test="${param.score>=70 && param.score<80}"><c:out value="中等"></c:out></c:when><c:when test="${param.score>=60 && param.score<70}"><c:out value="及格"></c:out></c:when><c:when test="${param.score<60 && param.score>0}"><c:out value="不及格"></c:out></c:when><c:otherwise><c:out value="您的输入有误!"></c:out></c:otherwise></c:choose><c:choose><c:when test="${param.score==100}"><c:out value="太棒了,你是第一名"></c:out></c:when></c:choose>

JSTL标签之forEach标签

forEach标签的用法
——根据循环条件遍历集合(Collection)中的元素
* var设定变量名用于存储从集合中取出元素(必须无默认值)
* items指定要遍历的集合(必须无默认值)
* begin,end用于指定遍历的起始位置和终止位置(有默认)
* step指定循环的步长(有默认)
* varStatus通过index,count,first,last几个状态值,描述begin和end子集中的元素的状态

常用用法1—全部遍历

<c:forEach var="存储当前遍历元素的变量" items="待遍历集合">——操作var变量表示的元素<br>
</c:forEach>
<!-- forEach标签的用法 --><%List<String> fruits = new ArrayList<String>();fruits.add("apple");fruits.add("orange");fruits.add("pear");fruits.add("watermelon");fruits.add("banana");fruits.add("grape");request.setAttribute("fruits", fruits);%><!--用法一:全部遍历 --><c:forEach var="fruit" items="${fruits}"><c:out value="${fruit}"></c:out><br></c:forEach>

常用用法2—部分遍历

<!--用法二:部分遍历 --><c:forEach var="fruit" items="${fruits}" begin="1" end="4"><c:out value="${fruit}"></c:out><br></c:forEach><c:out value="==========================="></c:out><br>

常用用法3—部分遍历中指定步长

<!--用法三:部分遍历并且指定步长 --><c:forEach var="fruit" items="${fruits}" begin="1" end="4" step="2"><c:out value="${fruit}"></c:out><br></c:forEach><c:out value="==========================="></c:out>

常用用法4—部分遍历时候输出元素状态

<!--用法四:部分遍历并且输出元素状态 --><c:forEach var="fruit" items="${fruits}" begin="1" end="4" step="1" varStatus="fru"><c:out value="${fruit}的四个属性值"></c:out><br><c:out value="index属性${fru.index}"></c:out><br><c:out value="count属性${fru.count}"></c:out><br><c:out value="first属性${fru.first}"></c:out><br><c:out value="last属性${fru.last}"></c:out><br><c:out value="————————————————————————————"></c:out><br></c:forEach><c:out value="==========================="></c:out><br>

forTokens标签的用法

——用于浏览字符串,并根据指定的字符将字符串截取
*items指定被迭代的字符串
*delims指定使用的分隔符
*var指定用来存放遍历到的成员
*begin指定遍历的开始位置(int型从取值0开始)
*end指定遍历结束的位置(int型,默认集合中最后一个元素)
*step遍历的步长(大于0的整型)
*varStatus通过index,count,first,last几个状态值,描述begin和end子集中的元素的状态

<!--forTokens标签的用法 --><c:forTokens items="010-88096789-123" delims="-" var="num"><c:out value="${num}"></c:out><br></c:forTokens>

import标签的用法

——可以把其他静态或动态文件包含到本JSP页面
——同<jsp:include>的区别为:只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。

<!--import标签的用法 --><!-- 导入网络上的绝对路径 --><c:catch var="error09"><c:import url="" charEncoding="utf-8"></c:import></c:catch><c:out value="${error09}"></c:out><br><!-- 导入相对路径文件 --><c:catch var="error09"><c:import url="/tt.txt" charEncoding="utf-8"></c:import></c:catch><c:out value="${error09}"></c:out><br>

*context引入的内容是webapps下的其他web project
——1.修改tomcat的发布路径
——2.修改TOMCAR_HOME%/conf/context.xml的Context标签中的属性
* crossContext=”true”

第一步:

remove掉已加载的项目。tomcat要保持运行

第二步:

修改Context,保存

重新运行项目。

<!-- context属性的用法 --><c:catch var="error06"><c:import url="/importFile.jsp" context="/AnotherWebProject" charEncoding="utf-8"></c:import></c:catch><c:out value="${error06}"></c:out><br>

JSTL标签之redirect标签

——该标签用了实现请求的重定向,同时可以在url中加入指定的参数
*url 指定重定向页面的地址,可以是一个string类型的绝对地址或相对地址
*context用于导入其他web应用中的页面

<!-- redirect标签的用法 --><c:redirect url="sencond.jsp"><c:param name="username">Lily</c:param><c:param name="password">aaaaaa</c:param></c:redirect><!-- 在sencond.jsp中获取传过来的值 --><c:out value="${param.username}"></c:out><c:out value="${param.password}"></c:out>

JSTL标签之url标签

——该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接。

<!-- url标签 --><c:if test="${ 1<3 }"><c:set var="partUrl">aa</c:set></c:if><c:url value="http://localhost:8080/${partUrl}" var="newUrl" scope="session"></c:url><a href="${newUrl}">新的URL</a>

JSTL函数之常用函数(1)

*要在页面添加

<%@ taglib prefix="fn" uri="" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="fn" uri=""%>
<%@ taglib prefix="c" uri=""%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL函数的使用</title>
</head>
<body><c:out value="“你好,Hello World中是否包含“World”${fn:contains('你好Hello World','World')}"></c:out><br><c:out value="“你好,Hello World中是否包含“aaaa”${fn:contains('你好Hello World','aaaa')}"></c:out><br><c:out value="“你好,Hello World中是否包含“hello”${fn:containsIgnoreCase('你好Hello World','hello')}"></c:out><br><br /><c:out value="${fn:startsWith('刘德华','刘')}"></c:out><br /><c:out value="${fn:endsWith('刘德华','华')}"></c:out><br /><br /><c:out value="${fn:escapeXml('<book>冰与火之歌</book>') }"></c:out><c:out value="${('<book>冰与火之歌</book>') }"></c:out><br /><c:out value="“你好,Hello World中,'llo'出现的值”${fn:indexOf('你好,Hello World','llo')}"></c:out><br><br />
</body>
</html>

代码示例:

链接: 密码: xg8a

更多推荐

JSTL+EL JSP常用标签

本文发布于:2024-03-07 19:21:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1718691.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:常用   标签   JSTL   EL   JSP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!