EL表达式和JSTL的使用
一:el表达式
1.概述:在jsp开发中,为了获取servlet域对象中存储的数据,经常要写很多java代码,这样的做法会使jsp页面混乱,难以维护,为此,在jsp2.0规范中提供了el表达式。它是expression language的缩写。
2.语法:${表达式}
2.1内置对象:
2.1.1获取指定域的对象:
<%--初始化数据-- %>
<%
pagecontext.setattribute("name", "pvalue");
request.setattribute("name", "rvalue");
session.setattribute("name","svalue");
application.setattribute("name", "avalue");
%>
<%--获取指定作用域的数据--%>
${pagescope.name }
${requestscope.name }
${sessionscope.name }
${applicationscope.name }
2.1.2请求参数
<%-- param.xxx 对应 request.getparameter("xxx"); paramvalues.xxx 对应 request.getparametervalues("xxx"); --%> ${param.username } ${paramvalues.hobby }<%--获得一组数据,使用数组 --%> ${paramvalues.hobby[1] }<%--如果是数组,可以使用下表 --%>
2.1.3pagecontext
jsp:<%=((httpservletrequest)pagecontext.getrequest()).getcontextpath() %> el:${pagecontext.request.contextpath }
2.2使用el获得数据
2.2.1自定义数据,必须放在作用域
<% string s = "black"; %> ${s } <%--无法获取,s不在域中 --%>
2.2.2获得字符串
<% string s = "black"; pagecontext.setattribute("sss",s); %> ${sss}<br/> ${pagescope.sss } <%这两个都可以获取到字符串“black”%>
2.2.3获得数组
<% string[] arr = {"a","b","c"}; pagecontext.setattribute("arr",arr,pagecontext.request_scope); %>
${arr }
${arr[1]}
${arr[2] }
//上面的pagecontext.request_scope后面介绍
2.3
2.3.1
setattribute(string name,值,int scope):如果没有指定scope,该属性默认在page范围内,如:pagecontext.setattribute("page","hello");
使用pagecontext将属性设置在request范围中pagecontext.setattribute("request2","hello" , pagecontext.request_scope);
使用pagecontext将属性设置在session范围中pagecontext.setattribute("session2","hello" , pagecontext.session_scope);
使用pagecontext将属性设置在application范围中pagecontext.setattribute("app2","hello" , pagecontext.application_scope);
2.3.2 getattribute(string name,int scope):取得指定范围内的name属性,
其中scope可以是如下4个值:
pagecontext.page_scope:对应于page范围。
pagecontext.request_scope:对应于request范围。
pagecontext.session_scope:对应于session范围。
pagecontext.application_scope:对应于application范围。
3.el执行表达式
例如:
${1+1}
${empty user}
${user==null?true:false}
二:jstl
1.概述:
jstl(jsp standard tag library),jsp标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。jstl标准标准标签库有5个子库,但随着发展,目前常使用的是他的核心库
标签库 |
标签库的uri |
前缀 |
core |
http://java.sun.com/jsp/jstl/core |
c |
i18n |
http://java.sun.com/jsp/jstl/fmt |
fmt |
sql |
http://java.sun.com/jsp/jstl/sql |
sql |
xml |
http://java.sun.com/jsp/jstl/xml |
x |
functions |
http://java.sun.com/jsp/jstl/functions |
fn |
2.导入安装包:
从apache的网站下载jstl的jar包。进入 “http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”网址下载 jstl的安装包。jakarta-taglibs-standard-1.1.2.zip,然后将下载好的jstl安装包 进行解压,此时,在lib目录下可以看到两个jar文件,分别为jstl.jar和standard.jar。 其中,jstl.jar文件包含jstl规范中定义的接口和相关类,standard.jar文件包含用于 实现jstl的.class文件以及jstl中5个标签库描述符文件(tld)
使用jsp的taglib指令导入核心标签库
3.一个简单的jsp文件
然后启动tomcat服务器,在地址栏输入地址访问test.jsp此时浏览器显示:
4.jstl核心库的常用标签
4.1 if标签:
<c:if test=””> 其中test是返回boolean的条件
如果visitcount==1判定为真,则浏览器页面打印:this is you first vist........!
4.2 foreach标签
4.2.1
for(int i=0;i<=5;i++){ system.out.println(i); } <%--对应如下:--%>
<c:foreach begin="0" end="5" var="i" > ${i }<br/> </c:foreach>
4.2.2
<% string[] fruits = {"apple","orange","grape","banana"}; pagecontext.setattribute("f",fruits); %> <c:foreach var="name" items="<%=fruits %>"> ${name } </c:foreach>
items属性用于指定将要迭代的集合对象
下一篇: (python)数据结构------列表