当前位置:   article > 正文

Java大法好-----JSTL和EL表达式_jstl表达式的优势与不足

jstl表达式的优势与不足

导读:

最近在看疯狂软件系列Spring+MyBatis企业应用实战,拖拖拉拉前后用了将近10天左右的时间将书籍大概过了一遍,除去书本知识之外,我觉得更为重要的是让我认识到了持久学习的关键性,三天打鱼两天晒网结果就是知识掌握的间断性和模糊性,所以看书要持续,要有持久坚定的韧性,如此才能从书中觅得黄金屋,颜如玉。

JSTL标准库

JSTL全称JavaServer Pages Standard Tag Library,又被业内人士称为JSP标准标签库,由阿帕奇的某一个开发小组维护,在JSP2.0中作为标准支持,一般我们最常用的是以c标签为显著特征的Core标签库。

诞生的背景

在讲JSTL之前我首先来说下他的诞生背景和存在的意义,年前在北京拜读了某大神的HeadFirst JSP&&Servlet(让我爱上了HeadFirst系列),大致对网站开发的历史稍有了解。在我们所谓的分包分层大家耳熟能详的MVC模式诞生之前,那个年代的JSP没有严格的所属层属性限制,通常我们看到的是在JSP页面中直接出现大量的业务逻辑编码(所谓的script),优势是学习成本低,灵活方便,但劣势也很显著,如果是个人小的站点没问题,但如果高大上的企业级Web应用采取这种方式就会漏洞百出,特别是在在出现了MVC这种企业架构模式之后,JSP只负责数据的呈现,但做了这个限制之后JSP的灵活性以及可扩展性就会受到影响,为了让JSP这一前端模板实用性更强,更丰富,JSTL诞生了。

具体类别(Core标签库四类十四个)

  1. 多用途核心标签:
    多用途核心标签主要包括,c:<>out(格式不支持)、c:<>set、c:<>remove、c:<>catch,其中c:<>out标签用于输出作用域中的变量可以设置的属性为value以及default。c:<>remove则是用于删除作用域中的属性,属性scope用于指定作用域范围,而var用于指定该作用域中具体要删除的对象。c:<>catch可以作为根标签用于捕获异常属性var用于指向具体的异常,该属性可以通过${}在JSP的其他页面引用。c:<>set该标签用于设置作用域中属性的值一方面可以添加新的属性,另外一方面可以更改原理属性的value(target的使用)。
  2. 条件控制标签:
    条件控制标签主要包括c,<>if、c:<>choose、c:<>when、c:<>otherwise,明确if标签的基本用法主要就是逻辑判断在if标签表现为在if中添加test,test后边加入具体的判断逻辑。choose,when和otherwise是对if逻辑判断的一个补充,类似于java编码中的if、else结构,需要注意的是choose标签作为根标签里边则是when和otherwise标签。
  3. 循环控制标签:
    循环控制标签顾名思义是处理循环逻辑的标签,主要包括c:<>forEach、c:<>forTakens,该标签最为常用的就是数据的列表化呈现,其中c:<>forEach标签中可以定义起始值,最终值以及遍历的步长值,items为具体的集合变量而var代表的是具体的某一项遍历值,需要强调的是在forEach标签中我们只需要加入单一的列表项。c:<>forTakens类似String.split()方法,可以通过设置delims属性的值将字符串拆分成相应的集合然后循环输出。
  4. URL相关标签
    URL标签主要有四类,分别是c:<>url、c:<>import、c:<>redirect、c:<>param,该类标签一般都和URL操作相关其中c:<>import标签用于在页面中导入其他jsp页面类似Android布局文件中的include。c:<>url用于指定一个或者定义一个Web应用中的具体的资源(变量的作用一次修改多处生效)需要强调的是该标签可以通过设置context的具体值来指向其他Web应用中的资源。

JSTL的优势

JSTL最大的优势就是丰富了JSP页面的数据呈现,使得JSP页面的数据呈现变得更加规范化,简单化,同时丰富了JSP的呈现方式从企业应用的架构角度来说也更加利于项目的分层(JSP作为单独的View数据呈现层), 从总体而言使得JSP这一前端模板更加好用(Themleaf、Velocity、Freemarker)。

EL表达式

EL表达式全程Expression Language,通过使用EL表达式JSP页面可以不使用JSP声明、脚本和表达式经由隐式对象完成和后端进行数据的交互,是数据呈现的一种实现方式。

EL表达式的作用

  1. 获取数据:
    主要用于替换JSP页面的脚本表达式,从各种Web作用域中获取后台传过来的各种数据(Java对象,List集合,Map集合,数组等)。
  2. 执行运算:
    利用EL表达式可以在JSP页面执行一些基本关系、逻辑和算术运算,实现数据的关系,算术,逻辑组合参生可用的新的数据。
  3. 获取Web开发常用对:
    EL表达式中定义了一些个隐式对象,利用这些可以获得Web开发常用对象的引用,进而可以获得这些对象中保存的数据。

EL表达式运算符

  1. 算术运算符:加(+)、减(-)、乘(*)、除(/)、取余(mod或者%)。
  2. 逻辑运算符:与(&&和and)、或(||和or)、非(!和not)。
  3. 关系运算符:等于(=和eq)、大于(>和gt)、小于(<和lt)、大于或等于(>=和ge)、小于或等于(<=和le)、不等于(!=或者ne)。
  4. empty运算符:判断JSP作用域中是否有相应的数据,如果没有返回为true,反之为false。

四大作用域

四大作用域主要包括:Page、Request、Session、Application

十一大隐式对象

隐式对象描述
initParam指的是所有环境初始化参数相当于ServletContext.getInitParam(“name”)
AAValues
param包含的是request中的参数${param.name}相当于request.getParameter(“name”)
paramValues区别于param该对象返回的是一个key为参数名value为字符串数组的Map
header//
headerValues//
AScopeBScope
pageScope//
requstScope//
sessionScope包含session所有属性的Map${sessionScope.name}返回session中名称为name的具体属性value
applicationScope//
AB
pageContext页面对应的全局变量
cookie指的是以cookie名称为key,该cookie实例为value的Map${cookie.name.value}为名称是name的cookie实例

九大内置对象

内置对象指的是JSP页面的内置对象,区别于隐式对象,隐式对象是针对EL表达式来说的,JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、page、pageContext、config、exception、out,其中需要强调的是exception该内置对象必须在isErrorPa=true的页面才能调用。

总结:

以上内容为EL表达式和JSTL的部分知识总结,正像我之前说过的知识无论如何还是要记忆的,记住了本身便拥有了极大地优势。我们重视实践的作用,但绝不意味着放弃理论的记忆、理解和学习,理论仍然要季要深入理解,当然在此基础之上就是大量的实践。2018是我的技术决胜年,也是人生最为关键的一年,无论遭遇什么,技术修炼学习总结都不会中短,而我也会在后续陆续推出更高质量的博文期待大家的支持!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/140081
推荐阅读
相关标签
  

闽ICP备14008679号