Javaweb--- EL表达式 JSTL标准标签库
一、EL表达式(expression language): 语法 ${...}
jsp中page指令有一个属性叫isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false
举个例子:
常规写法: <%=session.getAttribute("test")%>
EL表达式写法: ${sessionScope.test}或者${sessionScope["test"]}
实例1:EL变量
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<%
session.setAttribute("test", "山东威海");
request.setAttribute("test", "山东");
%>
${sessionScope.test }
<br>
${test }
</body>
</html>
知识点:EL变量
当前面不指定哪个作用域下面的值的时候, 会默认按照下面的顺序去找, 如果都找不到, 就输出一个空字符串
pageScope --> requestScope --> sessionScope --> applicationScope
实例2:[ ]和.
package com.hanqi.model; public class User {
private String name;
private int age; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
} }
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.hanqi.model.User"%>
<!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>
</head>
<body>
<%
User u = new User();
u.setName("小明");
u.setAge(20);
session.setAttribute("user", u);
%>
<h2>EL表达式通过[]取属性</h2>
${user["name"] }
${user["age"] }
<h2>EL表达式通过.取属性</h2>
${user.name }
${user.age }
</body>
</html>
知识点:[]和. 大多数情况下可以通用, 除了两种情况中
1, 表达式中含有特殊字符
错误: ${sessionScope.test_name}
正确: ${sessionScope["test_name"]}
2, 需要动态获取属性
sessionScope["test"]
[] 中可以放一个变量名, 但是点的后面不行
实例3:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList"%>
<!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>
</head>
<body>
<%
ArrayList<String> arr = new ArrayList<String>();
arr.add("北京");
arr.add("上海");
arr.add("南京");
arr.add("深圳");
arr.add("广州");
arr.add("杭州"); session.setAttribute("dis", arr);
%>
${dis[2] }<!-- 可以通过获取下标(索引)取得集合中的结果集 -->
</body>
</html>
知识点:在EL表达式中[]也可以用来表示数组或者集合中的索引值
实例4:EL自动类型转换
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<form action="test.jsp" method="post">
<input type="text" name="num" />
<input type="submit" value="提交" />
</form>
<%
String num = request.getParameter("num");
System.out.println(num);
%>
${param.num + 20 }
<br>
</body>
</html>
每一次提交,都会自动添加20,然后把值输出
二、EL运算符
算术运算符: + - * /或者div %或者mod
关系运算符: ==或者eq !=或者ne <或者lt >或者gt <=或者le >=或者ge
逻辑运算符: &&或者and ||或者or !或者not
验证运算符: empty(empty 对于 null和"" 的判断都是返回true)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
</head>
<body>
<%
session.setAttribute("test", "山东威海");
%>
<h1>EL运算符</h1>
${3 + 5 }
<br>${5 div 2 }
<br>${3 == 5 }
<br>${7 lt 8 }
<br>${empty test }
<br>${empty test123 }
<br> =================
<br>empty对null和空字符串的判断
<br> empty对空字符串的判断:${empty ""}
<br> empty对空的判断:${empty null}
<br> =================
</body>
</html>
三、JSTL(JSP Standard Tag Library)标准标签库:
实例1:c:out 标签
输出常量
value---直接赋值
输出变量
default---默认值
escapeXml---控制转义字符(默认为true, 如果需要转义, 设置为false)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="java.util.ArrayList"%>
<!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">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<%
session.setAttribute("test", "你好,我是session的一行字");
request.setAttribute("test", "你好,我是request的一行字");
%>
<div class="container">
<h1>c:out 输出标签</h1>
<hr>
<c:out value="这是一个页面"></c:out>
<br>
<c:out value="${test }"></c:out>
<br>
<c:out value="${sessionScope.test }"></c:out>
<br>
<c:out default="默认值" value="${test1 }"></c:out>
<br>
<c:out value="你 好"></c:out>
<br>
<c:out escapeXml="false" value="你 好"></c:out>
<br>
<c:out escapeXml="true" value="你 好"></c:out>
<!-- escapeXml="" ;是否转译特殊字符 -->
</div>
</body>
</html>
实例2:c:set标签
<%@ 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>Insert title here</title>
<style type="text/css">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<div class="container">
<h1>c:set标签</h1>
<hr>
<!-- scope="":作用域,只变量作用在哪个作用域里面
var="":给变量一个名字
value="":赋值
如果scope不写,默认设置在pageContext里面 --> <c:set scope="session" var="tt" value="test的值"></c:set>
<!-- 把一个属性为tt,属性值为 "test的值"的添加进session里面-->
<c:out value="${tt }"></c:out>
</div>
</body>
</html>
实例3:remove----只能用于页面内的变量移除
移除某个变量
var: 指定需要remove的那个变量名
scope: 两个scope中的变量名有重复的时候, 可以通过这个属性来确定移除的是哪个, 如果不指定, 则全部remove掉
<%@ 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>Insert title here</title>
<style type="text/css">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<%
session.setAttribute("test", "你好,我是session的一行字");
request.setAttribute("test", "你好,我是request的一行字");
%>
<div class="container">
<h1>c:remove标签</h1>
<!-- 移除某个变量的值 -->
<hr>
<c:set var="t1" value="qqqq"></c:set>
<br>
<c:out value="${t1 }"></c:out>
<br>
<c:remove var="t1" />
<c:out value="${empty t1 }"></c:out>
<br>
<br> session:
<c:out value="${sessionScope.test }"></c:out>
<br> request:
<c:out value="${requestScope.test }"></c:out>
<br>
<br>
<c:remove var="test" scope="session" />
session:
<c:out value="${sessionScope.test }"></c:out>
<br> request:
<c:out value="${requestScope.test }"></c:out>
<br>
<c:out value="${empty test }"></c:out> </div>
</body>
</html>
实例4:c:catch标签(相当于try...catch...)
可以在这个标签中放其他标签, 只有一个属性var
<%@ 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>Insert title here</title>
<style type="text/css">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<%!public void myexception() {
throw new RuntimeException("这是瞎写的一个异常!");
}%>
<div class="container">
<h1>c:catch标签</h1>
<!-- 捕获一个异常! -->
<hr>
<c:catch var="error">
<%
myexception();
%>
</c:catch>
<c:out value="${error }"></c:out>
</div>
</body>
</html>
实例5:c:if--->流程控制标签
<c:if test="EL表达式" var="变量名(指的是test属性的返回值:true或者false)" scope="作用域范围" ></c:if>
choose---以下三个标签通常一起使用, 类似于switch
when
otherwise--可以不写
<%@ 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>Insert title here</title>
<style type="text/css">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<%
session.setAttribute("score", 90);
%>
<div class="container">
<h1>c:if 标签</h1>
<!-- 做流程控制 -->
<hr>
<c:if test="${score>60 }">
<c:out value="及格了"></c:out>
</c:if>
<hr>
<c:choose>
<c:when test="${score>60&&score<70 }">
<c:out value="及格了"></c:out>
</c:when>
<c:when test="${score>70&&score<90 }">
<c:out value="优秀"></c:out>
</c:when>
<c:when test="${score<60 }">
<c:out value="继续努力"></c:out>
</c:when>
<c:otherwise>
<c:out value="完美"></c:out>
</c:otherwise>
</c:choose>
</div> </body>
</html>
实例6:小综合运用(通过输入成绩,可以立即判断在哪个等级范围内)
<%@ 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>Insert title here</title>
<style type="text/css">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<form action="index.jsp" method="post">
<input type="text" name="num" value="${param.num}" />
<input type="submit" value="提交" />
</form>
<%
session.setAttribute("score", 66); %>
<div class="container">
<h1>c:if标签</h1>
<%-- <hr>
<c:if test="${score>60}">
<c:out value="及格了"></c:out>
</c:if> --%>
<hr>
<c:choose>
<c:when test="${score>60&&score<70}">
<c:out value="及格了"></c:out>
</c:when>
<c:when test="${score>70&&score<80}">
<c:out value="优秀"></c:out>
</c:when>
<c:when test="${score<60}">
<c:out value="继续努力"></c:out>
</c:when>
<c:otherwise>
<c:out value="很棒"></c:out>
</c:otherwise>
</c:choose> </div>
</body>
</html>
实例7:c:forEach ---->循环控制标签
forEach
var: 设定一个变量值来存储从数组或者集合中遍历出来的值
items: 指定需要遍历的数组或者集合
begin, end: 指定需要遍历的起始位置
step: 每次遍历跳过的个数, 默认值是1
varStatus: 通过index(在原集合中的索引值), count(当前第几个), first(是否是第一个), last(是否是最后一个)来描述begin和end子集中的状态
注意first和last, 是判断的是否在输出结果中的第一个或者最后一个, 并不是原来的集合中
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="java.util.ArrayList"%>
<!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">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<%
ArrayList<String> arr = new ArrayList<String>();
arr.add("北京");
arr.add("上海");
arr.add("南京");
arr.add("深圳");
arr.add("广州");
arr.add("杭州"); session.setAttribute("dis", arr);
%>
<div class="container">
<h1>c:forEach 标签</h1>
<hr>
<h3>全部遍历</h3>
<c:forEach var="d" items="${dis }">
<!-- 遍历dis这个集合,遍历出来的每一个元素叫做d -->
<c:out value="${d }"></c:out>
<br>
</c:forEach>
<hr>
<h3>部分遍历</h3>
<c:forEach var="d" items="${dis }" step="2">
<c:out value="${d }"></c:out>
<br>
</c:forEach>
<hr>
<h3>部分遍历2</h3>
<c:forEach var="d" items="${dis }" begin="2" end="4">
<c:out value="${d }"></c:out>
<br>
</c:forEach>
<hr>
<h3>部分遍历3</h3>
<c:forEach var="d" items="${dis }" begin="2" end="4"
varStatus="dissta">
<c:out value="${d }"></c:out>
<br>
varStatus--index属性:<c:out value="${dissta.index }"></c:out>
<br>
<!-- 集合中索引位置,从0开始 -->
varStatus--count属性:<c:out value="${dissta.count }"></c:out>
<br>
<!-- 当前排列,从1开始 -->
varStatus--first属性:<c:out value="${dissta.first }"></c:out>
<br>
<!-- 判断在当前结果集中是不是第一个 -->
varStatus--last属性:<c:out value="${dissta.last }"></c:out>
<br>
<!-- 判断在当前结果集中是不是最后一个 -->
<c:out value="=============================="></c:out>
<br>
</c:forEach>
</div> </body>
</html>
实例8:forTokens(相当于字符串的split()方法)
<%@ 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>Insert title here</title>
<style type="text/css">
.container {
border: 1px red solid;
width: 80%;
margin: 10px auto;
}
</style>
</head>
<body>
<%
session.setAttribute("teststring", "0533-1234567890-110");
%> <div class="container">
<h1>c:forToken 标签</h1>
<hr>
<c:forTokens items="${teststring }" delims="-" var="r">
<c:out value="${r }"></c:out>
<br>
</c:forTokens>
</div> <
<%@ 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>Insert title here</title><style type="text/css">.container {border: 1px red solid;width: 80%;margin: 10px auto;}</style></head><body><form action="index.jsp" method="post"><input type="text" name="num" value="${param.num}" /><input type="submit" value="提交" /></form><%session.setAttribute("score", 66);%><div class="container"><h1>c:if标签</h1><%-- <hr><c:if test="${score>60}"><c:out value="及格了"></c:out></c:if> --%><hr><c:choose><c:when test="${score>60&&score<70}"><c:out value="及格了"></c:out></c:when><c:when test="${score>70&&score<80}"><c:out value="优秀"></c:out></c:when><c:when test="${score<60}"><c:out value="继续努力"></c:out></c:when><c:otherwise><c:out value="很棒"></c:out></c:otherwise></c:choose></div></body></html>
Javaweb--- EL表达式 JSTL标准标签库的更多相关文章
- JavaWeb(七)Cookie,EL表达式,标准标签库
Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件.Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端, ...
- EL表达式和JSTL标准标签库
一.EL表达式 什么是EL表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部 减少jsp脚本的编写 EL出现的目的是要替代jsp页面中脚本的编写. EL表达式的作用 EL最主 ...
- EL表达式 与 JSTL标准标签库
目录 EL表达式 什么是EL表达式 作用 EL内置11对象 EL执行表达式 JSTL 什么是JSTL JSTL标准标签库有5个子库 把JSTL标签库jar包引入工程当中 if标签 foreach标签 ...
- Java Web之JSTL标准标签库总结
[文档整理系列] Java Web之JSTL标准标签库总结
- java_web学习(五) JSTL标准标签库
1.什么是JSTL JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. ...
- JSTL 标准标签库 (JavaServer Pages Standard Tag library, JSTL)
JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制标签库的集合,用来解决 像遍历Map或集合.条件测试.XML处理,甚至数据 库访问和数 ...
- jstl标准标签库 常用标签
JSTL(JSP Standard Tag Library)标准标签库: 1, 核心标签(最常用, 最重要的) 表达式控制标签 out 输出常量 value---直接赋值 输出变量 default-- ...
- 在EL表达式或者Struts标签库中格式化日期对象,即将Date转换为yyyy-MM-dd格式
一.EL表达式 首先,在jsp页面引入<fmt> tags,<%@ taglib prefix="fmt" uri="http://java.sun.c ...
- JSTL标准标签库具体解释
JSTL标签库的使用是为类弥补html表的不足.规范自己定义标签的使用而诞生的. 在告别modle1模式开发应用程序后.人们開始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同一时候也 ...
随机推荐
- Android面试题3之描写叙述下Android的系统架构
描写叙述下Android的系统架构: Android系统从下往上分为Linux内核层(linux kerner),执行库(runtime library),应用程序框架层,应用程序层 linuxker ...
- ES8新特性
Object.values/Object.entries Object.values和 Object.entries是在ES2017规格中,它和Object.keys类似,返回数组类型,其序号和Obj ...
- 基于SpringMVC+Ext.js的权限管理系统(无权限框架)
代码地址如下:http://www.demodashi.com/demo/12811.html 0.准备工作 注意!!! 本案例数据库相关请下载例子包,内有数据库脚本.EXCEL数据表和详细的设计文档 ...
- Ubuntu下git使用
sudo apt-get install git //安装git git config --global user.name "github 用户名" git config --g ...
- sublime livereload插件
1.首先在chrome商店下载livereload 安装之后记得在 chrome 的 扩展程序 里面 勾上 允许访问文件地址 2.sublime text 3 中下载插件 Livereload 3.配 ...
- IOS开发——Core Graphics & Core Animation
好久没写过blog了.首先了解下近期苹果和IOS方面的最新消息. 1.WWDC2014在上个月举行了,与2013年一样.今年WWDC没公布硬件产品和新品(假设你懂cook你就会期待今年秋季公布会.估计 ...
- 模拟和数字低通滤波器的MATLAB实现
低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As=30dB,其他滤波器可以通过与低通之间的映射关系实现. %%模拟滤波器 %巴特沃斯——滤波器设计 wp=2*pi*2 ...
- ACdream 1216 (ASC训练1) Beautiful People(DP)
题目地址:http://acdream.info/problem? pid=1216 这题一開始用的是线段树.后来发现查询的时候还须要DP处理.挺麻烦..也就不了了之了..后来想到,这题事实上就是一个 ...
- 关于ViewData,ViewBag,TempData三者学习记录!
关于ViewData,ViewBag,TempData三者学习分享! 1.ViewData和TempData是字典类型,赋值方式用字典方式,ViewData["Key"] . 2. ...
- mysql单表导入数据,全量备份导入单表
(1)“导出”表 导出表是在备份的prepare阶段进行的,因此,一旦完全备份完成,就可以在prepare过程中通过--export选项将某表导出了: innobackupex --apply-log ...