JSTL实战二之基础

一、JSTL的灵感
JSTL的设计灵感来自JavaScript和XPath
WEB编程基于http,而http是简单的协议,所有的数据以字符形式提交,而java是一种强类型的语言,在WEB表现层更需要一种象JavaScript一样弱类型的语言。
而为了兼容jspx,JSTL标签的很多形式会看到XPath的影子,如<c:choose>,刚用JSTL的时候还抱怨JSTL只有

<c:iftest='${expr}'>
</c:if>

<c:choose>
<c:whentest='${expr}'>
</c:when>
<c:otherwise>
<c:whentest='${expr}'>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>

为什么不来个形如
<c:if test='${expr}'>
<c:else>
</c:if>
之类的东西。

就连在表示字符串时可用单引号和双引号也和javasrcipt惊人的一致

二、数据类型
和javascript基本一致,分为
字符型,用得最多
整数,不带小数点的
浮点数,带小数点的
布尔值,两个值true和false
null null,只是没有象javascript的undefined
数据类型非常简单,类型转换也如人所愿,如null在输出时会自动输出为空字符串,而不是用java时输出恼人的null

三、运算符
. 访问bean和map
[] 访问数组或List,也可用此访问不能用.存取的map或bean,这一点和javascript又是一致,如 map x中有个key叫com.company,此时不能用.存取,可以用x['com.company']
()
? : 三目运算符也是支持的,这样可以写出简洁的表达式
+
-
*
/ 或div
% 或mod
== 或 eq
!= 或 ne
< 或 lt
> 或 gt
<= 或 le
>= 或 ge
&& 或 and
|| 或 or
! 或 not
empty 强大的功能,可以判断一些类型为null或空
fn:funcName()

因为在XML中"<" ">"都是要转化的,所以在jsp中使用时尽量用“ 或 ”字符后面的运算方式

WEB在于表现,所有的东西都要表现为字符,复杂的逻辑在java在分层模块中解决,表现层中就让java退居二级,类javascript的JSTL完全能够胜任

JSTL实战二之基础相关推荐

  1. 应用程序框架实战二十三:基础查询扩展

    上面两篇已经作好准备,本文将进行基础查询扩展.当使用了Entity Framework这样的ORM框架以后,我们查询的核心被集中在IQueryable的Where方法上. 如果UI需要通过姓名查询一个 ...

  2. 【微信小游戏实战】零基础制作《欢乐停车场》二、关卡设计

    1.游戏立项 微信小游戏中有一款<欢乐停车场Plus>的小游戏,大家可以搜索玩下.这是一款益智类的小游戏,游戏中有红.黄.绿.蓝.紫5辆豪车6个停车位,玩家通过可行走路线移动小车,最终让各 ...

  3. WiFi基础学习到实战(二:WiFi网络“数据链路层”)

    欢迎大家一起学习探讨通信之WLAN.上节我们对802.11标准基于OSI模型进行了分析,主要将OSI模型的"数据链路层"定义分为"LLC层"和"MAC ...

  4. 阿里云Kubernetes实战2–搭建基础服务

    前言: 在系列的第一篇文章中,我已经介绍过如何在阿里云基于kubeasz搭建K8S集群,通过在K8S上部署gitlab并暴露至集群外来演示服务部署与发现的流程.文章写于4月,忙碌了小半年后,我才有时间 ...

  5. 零基础学python全彩版实战答案-零基础学Python(全彩版)

    商品描述: 本店出售的图书均是正版二手书,有一些笔记划线,基本是六-九品新左右,基本都没有光盘.介意者请提前咨询客服.本店所有书籍,因买家导致退货退款的,发出运费参照不包邮运费模板由买家承担.如果签收 ...

  6. CCNP精粹系列之十八--路由映射实战二,博主推荐文章

    路由映射实战二 本篇博文和上一篇是紧密结合的,只是在上个试验的基础上作了改动,达到其他的试验效果. 试验二: 在R1上增加一个网段,并发布路由.这里采用三种方法. 如下是第一种,是在试验一的基础上直接 ...

  7. Taro多端开发实现原理与项目实战(二)

    Taro多端开发实现原理与项目实战(二) 多端电商平台项目概述及开发准备 学习了前面的基础知识和进阶后是否跃跃欲试?我们准备了一个电商平台的项目来和大家一起实践使用 Taro 开发电商平台. 项目概述 ...

  8. 区块链教程(二):基础概念介绍

    注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 本系列重点在于以太坊基础知识.以太坊客户端以及以太坊solidity编程,因此博客重点在于以太坊核心知识点的掌握,区块链部分的基础知识可以作为补充 ...

  9. 《Android Studio开发实战 从零基础到App上线(第2版)》出版后记

    2015年11月23日,鄙人在csdn发表了第一篇技术文章,掐指一算距今已有三年.遥想当年开写博客,只是为了总结经验同时分享出来,后来机缘巧合受到出版社编辑邀请并出了书,完全是无心插柳的结果.当初写作 ...

最新文章

  1. python环境变量值_如何在python中读取Windows环境变量值?
  2. 事物的级别_浅谈MySQL并发控制:隔离级别、锁与MVCC
  3. Xamarin.Forms项目无法添加服务引用
  4. 关于SQL Server 2017中使用json传参时解析遇到的多层解析问题
  5. ESDF建图库voxblox的安装编译过程
  6. Javascript 中 JSON 与对象 的相互转换
  7. 常用Openssl命令
  8. spark学习-75-源代码:Endpoint模型介绍(6)-Endpoint的消息的接收(2)
  9. linux git clone 401,Git Eclipse:401未经授权的错误
  10. ffplay播放器原理剖析
  11. TB6612FNG电机驱动使用说明
  12. 计算机组装流程是什么,组装电脑的步骤
  13. 公交路线查询数据接口简单介绍
  14. C++练习实例———控制台实现坦克大战小游戏
  15. java文件一行一行读取_java一行一行写入或读取文件
  16. 2022-2028全球与中国智能家居监控摄像头市场现状及未来发展趋势
  17. matlab 双y轴 三y轴
  18. 程序人生 - 王者荣耀隐身设置,不让好友看到在线状态
  19. 全球及中国海上撇油系统行业市场深度分析与十四五前景预测报告2022-2028年
  20. There is no Qt version assigned to project

热门文章

  1. GLUE基准数据下载
  2. 解决Ubuntu 下域名解析出现ping: www.baidu.com: Temporary failure in name resolution及重启后/etc/resolvconf文件内容被重写
  3. html怎么快速收录,如何让百度快速收录网站或文章?
  4. 通用业务平台设计(五):预警平台建设
  5. 计算机辅助项目管理实验论文,计算机辅助项目管理课程报告.doc
  6. 网络变压器检测设备:耐压强度/绝缘电阻检测仪的工作原理
  7. 最新libvlc4.0+Qt设计视频播放器
  8. mysql 条码长度_商品条形码(JBarcode)
  9. Timesheet软件厂商比较图
  10. 通信模块测试软件,Q/GDW 376.2集中器本地通信模块接口协议测试