(十)EL表达式和JSTL标签快速入门
目录
什么是 el 表达式
EL表达式
用于获取数据;
在 JSP
页面中可以使用 ${标识符}
的形式,通知 JSP引擎
调用 pageContext.findAttribute()
方法,以 标识符
为关键字
从各个域对象中获取对象。 如果域对象中不存在 标识符
所对应的对象,则返回结果为""
(空串),注意不是null
;
返回 空串
而不是 null
,是el表达式
的一个迷人之处,我们可不希望在页面上显示null
吧;它做了一个转换,因为pageContext.findAttribute()
方法,查不到对象,返回的是null
;
el表达式
可以理解为是对pageContext.findAttribute()
方法的封装 ;
示例:使用EL表达式
获取pageContext
、request
、session
、application
域中的数据;
<%--模拟从四个域中,用el表达式取数据--%>
<%--java 代码必须写在脚本片段里面--%>
<%
// 先分别将数据存进四个域中
// 以键值对的形式向域中添加数据
// pageContext 域中存数据的时候,关键字不能用 pageContext,
// 因为pageContext 是el表达式自己定义的一个隐式对象,这个在后面的博客(el表达式详细介绍里面)会讲到;
pageContext.setAttribute("page", "我是pageContext中的数据");
request.setAttribute("request", "我是request中的数据");
session.setAttribute("session", "我是session中的数据");
application.setAttribute("servletContext", "我是servletContext中的数据");
%>
// 在同一个JSP页面中,使用el表达式取值
<%--el表达式,必须直接写在Jsp页面中,不能写在脚本片段里面--%>
${page}
<br>
${request}
<br>
${session}
<br>
${servletContext}
<br>
------------------------------------------------------
// output:
// 我是pageContext中的数据
// 我是request中的数据
// 我是session中的数据
// 我是servletContext中的数据
示例:使用EL表达式
获取Bean
属性
首先要知道
Javabean
的属性
, 这里说的属性可不是Javabean
类的字段,而是Javabean
类获取字段的setXXX
、getXXX
方法 ;
EL表达式
中可以使用${标识符.字段}
的形式直接访问 JavaBean
对象的属性,不需要再去调用方法。
<%--先往request域里面,放进去一个对象--%>
<jsp:useBean id="person" class="day09.Person" scope="request" ></jsp:useBean>
<%--为对象的字段 赋值--%>
<jsp:setProperty name="person" property="age" value="22"></jsp:setProperty>
<jsp:setProperty name="person" property="name" value="狗蛋"></jsp:setProperty>
<%--用el表达式取值--%>
${person.name} : ${person.age}
------------------------
// output:
// 狗蛋 : 22
获取当前WEB应用的名称
${pageContext.request.contextPath}
获取到的地址,自带斜杠,千万不要再地址前面再加 /
了
el表达式小结
上面只是个 入门级 的
el表达式
教程 ;
千万不要以为el表达式
只有这么点东西;el表达式
还是很有 、东西的
关于el表达式
的详细介绍,请查看博主博客el
表达式详细介绍 (可点击) ,
EL表达式
也可以使用类如${1==1}
的形式进行简单的逻辑判断;
一般用EL表达式
取数据,通常用 .
号,当 .
号取不出来的时候,就用[ ]
取数据;
例如,在取map中的数据的时候,键是数字的时候,.
号就取不出来了,这时候该用[‘11’]
这样取 ;
JSTL标签库
JSTL
是 Sun
公司开发的一套标签库,使用 JSTL
可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。(这是标签库出现的目的,也符合 jsp
的规范,页面中不出现一句 java
代码)
如何使用JSTL标签库
在页面中使用JSTL
标签需要完成以下2个步骤:
- 导入
jstl.jar
和standerd.jar
这两个JSTL
的jar
文件 - 在
JSP
页面中使用<%@tablib url ="xxxx" prifix="xxx" %>
元素导入标签库。
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
JSTL标签库中常用标签
<c:foreach var="" item="">
<c:if test="">
<c:foreach var="" item="">
标签事例
// 创建一个list,并向其中添加数据
<%
List<Person> list = new ArrayList<>();
list.add(new Person("小明"));
list.add(new Person("小强"));
list.add(new Person("狗蛋"));
request.setAttribute("list", list);
%>
// 遍历list 取值
<c:forEach var="person" items="${list}">
${person.name} <br>
</c:forEach>
<c:foreach >
标签,items
属性的值,是一个el表达式,它表示从哪一个对象中遍历取值; var
属性的值,是暂时保存每次的取值 ;
在使用 foreach
标签进行迭代 Map
集合的时候,迭代的是 Map
集合进行entrySet
返回 set<Map.entry>
集合
<c:if test="">
标签事例
<c:if test="${1==2}">
<%
out.write("你看不到我的");
%>
</c:if>
<c:if >
标签中必须要有 test
属性,<c:if >
标签体的内容是否得到执行,取决于 test
属性中的表达式的值,为真,就执行;注意:test
属性中的表达式,直接写普通的表达式不奏效,好像只能写 el表达式
;
备注:
当然了,上面介绍的都是el表达式和jstl标签库的简单用法;起个快速入门的作用 ;
《over》
(十)EL表达式和JSTL标签快速入门的更多相关文章
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- JSP、EL表达式、JSTL标签库干货(建议收藏)
JSP(Java Server Pages)类似于ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件, ...
- Java第三阶段学习(十四、JSP动态页面、EL表达式、JSTL标签库)
一.JSP技术 1.jsp脚本和注释 jap脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部,比如写在doget.dopost 内的代码 2) ...
- JavaWeb基础—EL表达式与JSTL标签库
EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一 ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...
- Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库
一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成se ...
- JSP和El表达式和JSTL标签库使用
核心标签库: <%@ page language="java" import="java.util.*" pageEncoding="utf-8 ...
- EL表达式与JSTL标签map遍历varStatus属性下标使用
在JSP页面开发中,JSTL标签库迭代标签<c:forEach>为我们迭代遍历数组集合提供了一种选择. 遍历过程中varStatus属性为我们遍历集合提升了很大操作空间. 贴一下具体使用 ...
- EL表达式、JSTL标签库
一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...
随机推荐
- JSP 9大内置对象以及作用
1.HttpServletRequest的 request对象作用:代表请求对象,用来接收客户端通过http协议连接传输到服务器端的数据. 2.HttpServletResponse的response ...
- 让vim更加智能化
从此,让我的vim更加的智能化,整整用了一个周日,基本是值得的: "新建.c\.cpp\.python\.sh等文件时,使用定义的函数SetTitle,自动插入文件头 func SetTit ...
- js 根据滚动条加载数据
很久没记笔记了,最近搞起web开发了 <html> <head> <script src="http://code.jquery.com/jquery-1.7. ...
- uni-app和php交互DES加密解密数据
1 uni-app操作 (1) 打开HBuilderX的视图->显示终端 cd 切换到你项目的根目录 执行命令 npm install crypto-js 安装成功后你的项目根目录会生成node ...
- createElement与createDocumentFragment的一些小区别
在DOM操作里,createElement是创建一个新的节点,createDocumentFragment是创建一个文档片段. 网上可以搜到的大部分都是说使用createDocumentFragmen ...
- arcgis python 发送邮件
import arcgisscripting, smtplib, os, sys, traceback from email.MIMEMultipart import MIMEMultipart fr ...
- JavaScript WebSocket 使用总结
翻看之前写的 Highcharts使用总结 和 前后台交互之传参方式,想对 WebSocket 单独写一个使用总结. 一.认识 WebSocket . WebSocket 是 H5 新出的一种协议, ...
- HADOOP回顾
1. hadoop 分为四大模块 common 其他组件的公共一来模块 HDFS 分布式模块提供高吞吐量的数据访问 mapreduce 分布式计算模块 yarn 作业调度和集群资源管理模块 2. 安 ...
- leetcode 127. Word Ladder、126. Word Ladder II
127. Word Ladder 这道题使用bfs来解决,每次将满足要求的变换单词加入队列中. wordSet用来记录当前词典中的单词,做一个单词变换生成一个新单词,都需要判断这个单词是否在词典中,不 ...
- 【分类算法】感知机(Perceptron)
0 - 算法描述 感知机算法是一类二分类算法,其问题描述为,给定一个训练数据集 $$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$ 其中$x_i\in \m ...