不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码
el表达式的出现是为了简化jsp中读取数据并写入页面的操作.
el表达式的功能不多,也很好记
读取域对象中的值,并写入到页面.
<%
pageContext.setAttribute("pk", "1");
request.setAttribute("rk", "2");
session.setAttribute("sk", "3");
application.setAttribute("ak", "4");
%> ${pageScope.pk}
${requestScope.rk}
${sessionScope.sk}
${applicationScope.ak}
我们使用 作用域.key的方式可以直接获取域对象中的值
我们也可以省略作用域
<%
pageContext.setAttribute("key", "1");
request.setAttribute("key", "2");
session.setAttribute("key", "3");
application.setAttribute("key", "4");
%> ${key}
注意了,如果我们省略作用域,那么表达式会按照 pageScope-->requestScope-->sessionScope-->applicationScope的顺序去查询匹配的key值.如果有一个域中查询到.则不会在查询其他域.
如果获取不到不会抛出异常
下面我们使用el表达式来操作object类型的数据
public class User {
private String name;
private int age; public User(String name, int age) {
this.name = name;
this.age = 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;
}
}
<%
request.setAttribute("user", new User("张三", 22));
%>
${requestScope.user.name}
${requestScope.user.age}
注意啦!如果读取对象的属性.那么该对象必须实现属性相对应get()方法.否则抛异常!!!
el表达式也支持数据的运算
<%--数学运算--%>
${(1+2*3+1)/2%3}
<%--关系运算--%>
${1>4}
<%--> >= < <= == !=
gt ge lt le eq !=--%>
//注意啦!我们一般不会用符号运算,而是用字符代替.防止跟html标签冲突
<%--逻辑运算--%>
${true||false}
<%--三元表达式--%>
${3>1?"大于":"小于"}
el表达式的其他使用
读取请求参数
<%--获取请求参数中的值--%>
${param.age}
如果参数是数组类型
<%--获取值是列表的参数--%>
${paramValues.age[0]}
${paramValues.age[1]}
jstl(核心类库)
需要引入两个jar
jstl.jar standard.jar
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
导入标签约束指定标签库命名空间
首先是设置域属性
<c:set scope="session" var="cskey" value="c标签设置session"/>//设置attribute
<c:remove scope="session" var="cskey"/>//删除attribute
scope是域范围:page,request,session,application. var是属性名.value则是属性值
if语句,注意 test中只能用el表达式
<c:if test="${3>2}">
3>2
</c:if>
if else 语句
<c:choose>
<c:when test="${crage==1}">
when1
</c:when>
<c:when test="${crage==2}">
when2
</c:when>
<c:otherwise>
when3
</c:otherwise>
</c:choose>
循环语句
<c:forEach var="i" begin="1" end="5" step="1">
当前循环:${i}
</c:forEach>
var 当前变量名,begin开始位置,end结束位置,注意这里的end="5"其实是 <=5 以上的会输出5次.另外值得一说的是,在var中声明的变量会存到pageContext域中.所以el表达式才可以取值
循环操作 集合
<%
List<User> users = new ArrayList<User>();
users.add(new User("张三",1));
users.add(new User("李四",2));
users.add(new User("王五",3));
request.setAttribute("users",users);
%>
<c:forEach items="${users}" var="user">
循环用户:${user.name}${user.age}
</c:forEach>
循环操作 map
<%
Map<Integer,User> maps = new HashMap<>();
maps.put(1,new User("张三",1));
maps.put(2,new User("李四",2));
maps.put(3,new User("王五",3));
session.setAttribute("maps",maps);
%>
这个略微有些说法,var 中存储的其实是一个键值对,在el中 .key就是取map的key .value就是取map的value
<c:forEach items="${sessionScope.maps}" var="entry">
循环用户Map:${entry.key}${entry.value.name}${entry.value.age}
</c:forEach>
以上就是el表达式和jstl标签的常用操作.
jsp之el表达式jstl标签的更多相关文章
-
jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...
-
JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
-
2.EL表达式&;JSTL标签库常用方法
1.EL表达式 Expression Language表达式语言,主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出. 格式为${表达式} EL表达式输出Bean的普通属性.数组属性.Li ...
-
jsp&;mvc开发模式&;jstl标签&;三层架构
目录 jsp 概念 原理 jsp 的脚本 jsp的内置对象 指令 注释 mvc:开发模式 jsp演变历史 mvc 优缺点 El表达式 JSTL 标签 练习 三层架构:软件设计架构 案例:用户信息列表展 ...
-
jsp与El,jstl知识点总结归纳
jsp与El,jstl知识点总结归纳 jsp部分 一.jsp的三大指令 page ,include,taglib 1.jsp中的page指令 <% page %>-设置jsp 例如: &l ...
-
第75节:Java的中的JSP,EL和JSTL
第75节:Java中的JSP,EL和JSTL 哭吧看不完的!!! Cookie和`Session 请求转发和重定向的区别: 地址不一样 请求次数也不一样 数据无法传递 4.跳转范围有限制 效率 请求转 ...
-
JSP、EL、JSTL
JSP(Java Server Pages) 什么是JSP Java Server Pages(Java服务器端的页面) 使用JSP:SP = HTML + Java代码 + JSP自身的东西.执行J ...
-
超全面的JavaWeb笔记day12<;Jsp&;JavaBean&;El表达式>;
1.JSP三大指令 page include taglib 2.9个内置对象 out page pageContext request response session application exc ...
-
JSP的EL表达式语言
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/expression-language.html: JSP表达式语言(EL)可以方便地访问存储在JavaB ...
随机推荐
-
Unix调试工具dbx使用方法
dbx 命令 用途 提供了一个调试和运行程序的环境. 语法 dbx [ -a ProcessID ] [ -c CommandFile ] [ -d NestingDepth ] [ -I Dire ...
-
Delphi中怎么结束线程(这个线程是定时执行的)(方案二)
上篇博客中提出了一个问题:怎么结束一个定时循环执行的线程,并给出了一个解决方案,但是又出现了一个问题,详细去参考上一篇博客. 然后出去撒了个尿,突然脑子里出现了一个想法(看来工作和思考久了,出去走走, ...
-
Range对象理解,浏览器兼容性,获取鼠标光标位置
一.关于浏览器的兼容性 目前主要有3种关于range的类似的对象,分别是W3C range 对象,Mozzlia selection ,ie TextRange 关于这三种的区别,请查看文档 http ...
-
Android 通过xml 自定义图片
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http:/ ...
-
【React Native 实战】二维码扫描
1.前言今天介绍React Native来实现二维码扫描的功能.首先我们要借助第三方插件react-native-barcode-scanner-universal来实现跨平台二维码扫描. 2.介绍 ...
-
ifdebug
#if DEBUG 首先,大小写不能写错. 其次,解决方案配置设为:Debug,才会执行该语句,如果在条件里面搭配Debug.Assert等,效果甚佳.而如果要设置为Release模式,就不会执行条件 ...
-
射频识别技术漫谈(13)&mdash;&mdash;Mifare S50与S70【worldisng笔记】
Mifare S50和Mifare S70又常被称为Mifare Standard.Mifare Classic.MF1,是遵守ISO14443A标准的卡片中应用最为广泛.影响力最大的的一员.而Mif ...
-
How to Send an Email Using UTL_SMTP with Authenticated Mail Server. (文档 ID 885522.1)
APPLIES TO: PL/SQL - Version 9.2.0.1 to 12.1.0.1 [Release 9.2 to 12.1]Information in this document a ...
-
VS2015集成新潮工具4
VS2015集成新潮工具(四) 本课程来源与微软connect视频教程,Modern Web Tooling in Visual Studio 2015 本课程主要讲下当下流行的前端工具 bowe ...
-
快递单号查询免费api接口(PHP示例)
快递单号查询API,可以对接顺丰快递查询,邮政快递查询,中通快递查询等.这些快递物流企业,提供了快递单号自动识别接口,快递单号查询接口等快递物流服务.对于电商企业,ERP服务企业,集成此接口到自己的软 ...