JSTL与EL之间的千丝万缕
来源:互联网 发布:win10有解压软件 编辑:程序博客网 时间:2024/05/13 03:26
一、关于JSTL和EL:
什么是JSTL?
JSTL( JSP Standard Tag Library)是JSP标准 标签库,由apache实现。
什么是EL?
EL(Expression Language)表达式语言。
两者关系?
JSTL在赋值时会大量用到EL表达式。可以简单理解成,EL只是JSTL中的一部分。
作用:
简化jsp页的书写;削弱jsp中调用servlet的Java代码,便于分层控制。只要是jsp能够完成的功能使用JSTL和EL表达式都可以完成。包括从和Servlet的数据交互、操作XML、格式化数据显示以及样式显示(控制表格的偶数行使用不同的颜色显示等)、Request中读取数据、控制循环(数组、Map等)、支持函数处理(trim、substring、join等)、还可以自定义函数等、操作数据库(违背分层原则,一般不这么使用)。
二、EL表达式:
如果只是使用EL表达式,不需要引入任何jar包,只要jsp/servlet容器实现了J2EE1.4/servlet2.4、JSP2.0规范就可以。但是它的功能有限,如:针对于空,给出默认的输出,迭代循环数组元素等是无法实现的。对于JSTL,这些都是没有问题的,但需要进行引入和说明。
语法:${scope} scope(applicatioin/session/servlet等)
内置对象:pageScope、reqeustScope、sessionScope、applicationScope
默认搜索范围:pageScope——applicationScope
指定搜索方式:${requestScope.hello}
在jsp中,很少直接传字串,一般传的是对象,且对象中还包含有其他对象,无需引入包,要求对象都需要有get方法,在jsp中获取数据的时候,直接点出get后面的那一部分,不区分大小写。
EL隐含对象:
param:针对request.getParameter("itemNoOrName")使用这个内置对象取得数值,itemNoOrName=${param.itemNoOrName}
如果request.setAttribute("pageModel", pageModel);则直接使用EL表达式取数据。
需要注意点是:EL表达式不能取出使用常量定义的变量。
三、JSTL:
关于JSTL,不做过多的说明,jsp界面中的java代码,使用JSTL都可以替代,而且更加简洁,负责前台的人甚至可以不需要熟悉java代码。
这里附上一个帮助文档:有详细的api说明。
四、使用:
演示通过使用jstl和el和核心库的使用:获取并显示用户信息。
1、引入jar包:
如果要使用JSTL,而不仅仅是EL,需要引入jstl.jar和standard.jar两个包。这里也提供下载连接。
2、定义java实体类:
这里使用一个User类和一个Group类,一个用户属于某个Group,就是两个普通的实体类,二者之间有一个关联,代码比较简单,就不贴了。
3、编写Servlet类:
这里的Servlet跟不适用jstl没有任何差别。这里制造了一些实体结构、空、数组、map数据,为下一步的jstl的访问,做演示基础。
4、使用jstl的核心库访问、控制数据显示:
jsp_core.jsp文件:
注意需要添加对jstl的引用:
不同版本的jstl,uri的路径是有所区别的,初学者,可以从jstl Library—>jstl-impl.jar—>META-INF目录下的具体的tld文件中复制。
通过上面的代码就可以看出使用jstl要比嵌入java代码简洁的多,尤其是在循环方面更是如此。具体语法,比较简单,而且文章中也已经附上了帮助文档,这里不做赘述,关键还是要多实践。
五、疑问:
jstl方便在jsp中构造页面的显示,对于树形结构,如果是在servlet中结合数据库递归+html代码实现,一些优秀的框架,如ext等已经做的很好了,但是对于使用jstl有什么好的方法吗?
- JSTL与EL之间的千丝万缕
- JSTL与EL之间的千丝万缕
- JSTL与EL之间的千丝万缕
- JSTL与EL之间的千丝万缕
- JSTL与EL之间的千丝万缕
- DOM与JavaScript、jQuery之间千丝万缕的关系
- DOM与JavaScript、jQuery之间千丝万缕的关系
- DOM与JavaScript、jQuery之间千丝万缕的关系
- 我的JSTL与EL
- jstl与el的区别
- JSTL与EL的区别
- Java学习——JSTL标签与EL表达式之间的微妙关系
- Java学习——JSTL标签与EL表达式之间的微妙关系
- Struts2标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系与各自使用
- 寄存器 cache 内存 硬盘之间的千丝万缕
- typedef struct 和struct 之间的千丝万缕
- JSTL与EL的基本介绍
- JSTL与EL的基本介绍
- 模块开发的设计
- Windows8.1 与Ubuntu14.04双系统
- 第53课实战操作Kafka+Flume成功! Spark大型项目广告点击项目技术骨架实现之Spark+Kafka+Flume实战
- react-native windows环境搭建
- javascript 设计模式
- JSTL与EL之间的千丝万缕
- python中实用的collections模块
- Swift学习记录 -- 17.Swift中throws处理方式
- HDU 5918 Sequence I (kmp)
- gcc编译器(二)
- 显示单元的封装类:ViewOfObject
- JZOJ4810. 【NOIP2016提高A组五校联考1】道路规划
- More Effect C++--placement delete
- 经典的分词方法实现(JAVA)