el表达式和jstl标签库

一:el表达式:表达式语言,jsp页面获取数据比较简单
1、el表达式的语法(掌握)
el表达式通常取值是获取作用域对象中的属性值:${属性名}=>是el表达式的简写的形式
跟jquery不一样,$(选择器)jquery对象,代码写在js的脚本块中
完整的书写形式:
  四个作用域 四种取值方式获取不同作用域中的属性值
${pageScope.attrname } pageScope.属性名
${requestScope.attrname }
${sessionScope.attrname }
${applicationScope.attrname }
注:jsp2.0以上版本,对应 servlet 3.0以上版本,jsp默认忽略EL表达式,所以在使用el表达式的时候需要在 page指令中加上。isELIgnored="false" 开启EL表达式,true忽略(默认是忽略)
EL表达式取值的两种方式例子:test.jsp

 <%@ page language="java" isELIgnored="false" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'test.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<%
//将数据放到作用域对象中 //page域 当前页面有效
pageContext.setAttribute("uname", "印度阿三"); //一次请求有效,可以是多个页面,转发页面
request.setAttribute("fav", "睡觉"); //session域取值 一次会话,多个请求
session.setAttribute("value", "躺在床上听音乐"); //应用域中取值一个web应用
application.setAttribute("小喜庆", "小云云");
%>
<!--page域用el表达式取值 -->
page域用el表达式取值:
${uname }&emsp;
${pageScope.uname }<hr> <!--request域用el表达式取值 -->
request域用el表达式取值:
${fav }&emsp;
${requestScope.fav }<hr> <!--session域用el表达式取值 -->
session域用el表达式取值:
${value }&emsp;
${sessionScope.value }<hr> <!--application域用el表达式取值 -->
application域用el表达式取值:
${小喜庆 }&emsp;
${applicationScope.小喜庆 }<hr> </body>
</html>

在测试作用范围页面之前,必须先运行 test.jsp将数据放到作用域对象中
测试test.jsp四个作用域的作用范围【getTest.jsp】

 <%@ page language="java" isELIgnored="false" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'getTest.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<p>在测试 当前页面之前,必须先运行 test.jsp将数据放到作用域对象中</p><hr>
测试test.jsp四个作用域的作用范围 <br><hr> <!--page 当前页面有效 -->
page域用el表达式取值:
${uname }&emsp;<br>
<!--request 一次请求有效,可以是多个页面,转发页面 -->
request域用el表达式取值:
${fav }&emsp;<br>
<!--session 一次会话,多个请求 -->
session域用el表达式取值:
${value }&emsp;<br>
<!--application 应用域中取值一个web应用 -->
application域用el表达式取值:
${小喜庆 }&emsp;<br>
</body>
</html>

如果不同的作用域,但是属性名相同

<!-- 【取值】如果不同的作用域,但是属性名相同 -->

注意:在省略 ***Scope对象的时候,取值的顺序,先从小范围获取数据 page,如果获取到了就返回,如果page获取不到,会去找request域,依次类推,找application ,如果都找不到,则返回null
2、el表达式获取不同数据类型的值(java 代码 字符串,数值,对象,list,map,数组)
①对象


注:在获取对象属性的时候,el表达式的解析的工具类,底层调用 的 get方法,不是直接调用的属性。el的解析对象用的反射,调用 get方法 Class ----getMethod("get方法")。${student.id }<=> ${student.getId }
②list


③map


注:map取值有两个:
点获取.简单【${map.fav }】
["key"] 比较灵活,可以处理特殊符号【${map.fav,ff }错误的 =>${map["fav,ff"] }】
④数组


student.java

 package boom.el.entity;

 import java.util.Date;

 /**
* 学生实体类对象
* @author Administrator
*
*/
public class Student {
private int id;
private String name;
private Date hiredate; public Student() {
} public Student(int id, String name, Date hiredate) {
super();
this.id = id;
this.name = name;
this.hiredate = hiredate;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getHiredate() {
return hiredate;
} public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
} @Override
public String toString() {
return "Sutudent [id=" + id + ", name=" + name + ", hiredate="
+ hiredate + "]";
} }

test.jsp

 <%@ page language="java" isELIgnored="false" import="java.util.* , boom.el.entity.*"  pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>el表达式获取不同数据类型的值 </title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body> <!-- 获取对象的值 -->
<%
/* 获取对象的值 【创建一个实体类 ,获取对象的属性值】*/
Student student = new Student(0,"林徽因",new Date());
//将 Student对象 放到作用域对象中
request.setAttribute("student", student);
%>
${student }<hr>
${student.id }&emsp; ${student.name }&emsp; ${student.hiredate }&emsp;
<%-- 在获取对象属性的时候 ,el表达式的解析的工具类 底层调用 的 get方法,不是直接调用的属性
el的解析对象用的反射,调用 get方法 Class ----getMethod("get方法")
${student.id }<=> ${student.getId }
--%> <!-- 获取list的值 -->
<%
/* 创建对象存入list中 */
Student stu1 = new Student(1,"陆小曼",new Date());
Student stu2 = new Student(2,"周旋",new Date());
Student stu3 = new Student(3,"阮玲玉",new Date());
/* <!-- list存值 --> */
List<Student> list = new ArrayList();
list.add(stu1);
list.add(stu2);
list.add(stu3);
request.setAttribute("list", list);
%>
<!-- el表达式取值 -->
<hr> 获取 作用域对象中list<br>
${list.get(0) }<br>
<!-- list获取属性的具体值 -->
${list.get(1).name }<br>
${list.get(2) }<br><hr> <!-- 获取map的值 -->
<%
Map map = new HashMap();
map.put("fav", "music");
map.put("codeing", "Java");
map.put("fav,ff", "run");
request.setAttribute("map", map);
%>
<!-- el表达式取值 -->
${map }<br>
${map.fav }<br>
${map["fav,ff"] }<br><hr> <%-- map取值有两个
. 简单
["key"] 比较灵活 ,可以处理特殊符号
${map.fav,ff } 错误的 =>${map["fav,ff"] } --%> <!-- 获取数组的值 -->
<%
String[] arr = {"haha" , "gaga" ,"heihei"};
request.setAttribute("arr", arr);
%>
<!-- el表达式取值 -->
获取数组的元素:
${arr }&emsp;
${arr[0] } </body>
</html>

3、el表达式的基本运算
+ 字符串相加 非数值型字符串,在el表达式中不能直接相加,需要存放到request域中

4、el表达式可以在html代码块中,javascript 的脚本块中

5、el表达式的内置对象11个(掌握其中的一部分)
隐含对象 描述 
和作用域相关的【前4】,存取数据的隐含对象:【主要作用:获取作用域对象的数据 】



二:jstl标签库
1、jstl标签库,jsp标准标签库(只要jsp,标签库就起作用)
jstl标签库常用标签:jstl 标签库 for 循环,条件判断【for循环方法的封装 ,if 判断方法的封装】
2、jstl标签库的分类:
 ①核心标签库:c标签库 
 ②常用标签:foreach 标签 遍历数据、逻辑判断标签:c:if、c:when、c:choose、c:otherwise
 ③格式化标签库:时间格式化标签
 ④函数标签库
 ⑤xml标签库
 ⑥数据库sql标签库
3、jstl标签库使用
jstl 标签,就是 java代码对 函数的封装
myeclipse创建web项目的时候,自动加载jstl

①引入相应的jstl标签库
<!-- 核心标签库 -->
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<!-- 函数标签库 -->
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
解释:@taglib引入、uri 标签库地址、
tld 文件 将标签库底层的java实现类和 jsp连接起来的文件

②使用标签库

参数解释:
<c:set></c:set>:存储数据、var 存储数据的变量、scope 作用范围、value 存储的数据 
<c:out value=""></c:out>:value 输出数据
<c:remove var="name"/>:移除数据
遍历:
<!--属性 :
var   遍历的变量 
items 要被遍历的数据
-->
<c:forEach var="stu1" items="${list }">
  ${stu1.id }=>${stu1.name }<hr>
</c:forEach>

09-【el表达式和jstl标签库】的更多相关文章

  1. JSP、EL表达式、JSTL标签库干货(建议收藏)

    JSP(Java Server Pages)类似于ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件, ...

  2. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...

  3. Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库

    一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成se ...

  4. EL表达式、JSTL标签库

    一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...

  5. EL表达式和JSTL标签库

    expresion language表达式语言 可以输出表达式的值.跟jsp的表达式脚本一样.计算表达式的值后输出.  EL表达式出现的目的是为了使JSP写起来更加简单,让jsp的代码更佳简化. 1. ...

  6. Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)

    一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...

  7. JavaWeb基础—EL表达式与JSTL标签库

    EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一 ...

  8. 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!

    jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...

  9. jsp页面使用EL表达式 使用Jstl标签库中的标签,需要引入jstl.jar和standard.jar

    spring boot 中使用jstl 首先在pom中加入 <dependency> <groupId>jstl</groupId> <artifactId& ...

  10. EL表达式与JSTL标签库(一)

    1.JSTL概述 JSTL标签库由标签库和EL表达式两个部分组成.JSTL标准标签库(Java Server Page Standard Tag Library),用来解决创建的页面的操作问题,包括输 ...

随机推荐

  1. java文件上传系统

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

  2. HBase管理与监控——强制删除表

    在用phoenix创建Hbase表时,有时会提示创建失败,发现Hbase中又已创建成功, 但这些表在进行enable.disable.drop都无效,也无法删除: hbase(main)::> ...

  3. Angular05 angular架构、搭建angular开发环境、组件必备三要素、angular启动过程

    1 angular架构 1.1 组件:是angular应用的基本构建模块,可以理解为一段带有业务逻辑和数据的HTML 1.2 服务:用来封装可重用的业务逻辑 1.3 指令:允许你想HTML元素添加自定 ...

  4. SpringBoot: 2.SpringBoot整合servlet(转)

    整合方式1:通过注解扫描完成 Servlet 组件的注册 1.编写servlet package com.bjsxt.servlet; import javax.servlet.ServletExce ...

  5. mysql 插入数据后返回自增 ID 的七种方法

    参考地址:https://blog.csdn.net/qq_30715329/article/details/80868411 其中使用函数方式.存储过程方式.注解方式.xml属性方式设置都可. 常用 ...

  6. Java-Redis 热部署问题

    项目请求时报错: java.lang.ClassCastException: cn.xingaohbd.seckil.model.User cannot be cast to cn.xingaohbd ...

  7. 基于licode搭建webrtc服务器

    0. 前言 licode官网文档安装教程十分简单, 但是实际搭建过程是很艰辛的. 官方文档没有提示说会遇到什么样的问题, 实际过程中可能遇到各种各样的问题, 在解决的时候费时费力, 我就总结一下自己在 ...

  8. Python 常用单词

    Python常用单词(英文好的人自动忽略) 单词 发音 翻译 作用 print 普润特 打印 显示我们想要查看的内容 input 因普特 输入 获取用户输入的一些内容 int 印特 整型 将有引号的数 ...

  9. Vasya and Endless Credits CodeForces - 1107F (二分图完美匹配)

    大意: n中贷款, 每种只能买一次, 第$i$种给$a_i$元, 要还款$k_i$个月, 每个月底还$b_i$元. 每个月可以在月初申请一种贷. 求某一时刻能得到的最大钱数.

  10. LeetCode面试常见100题( TOP 100 Liked Questions)

    LeetCode面试常见100题( TOP 100 Liked Questions) 置顶 2018年07月16日 11:25:22 lanyu_01 阅读数 9704更多 分类专栏: 面试编程题真题 ...