欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

EL表达式和JSTL的使用

程序员文章站 2022-03-25 21:40:21
一:EL表达式 1.概述:在jsp开发中,为了获取Servlet域对象中存储的数据,经常要写很多java代码,这样的做法会使JSP页面混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式。它是Expression Language的缩写。 2.语法:${表达式} 2.1内置对象: 2.1.1获 ......

一:el表达式

1.概述:在jsp开发中,为了获取servlet域对象中存储的数据,经常要写很多java代码,这样的做法会使jsp页面混乱,难以维护,为此,在jsp2.0规范中提供了el表达式。它是expression language的缩写。

2.语法:${表达式}

2.1内置对象:  

EL表达式和JSTL的使用

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)

 

EL表达式和JSTL的使用

使用jsp的taglib指令导入核心标签库EL表达式和JSTL的使用

 3.一个简单的jsp文件

EL表达式和JSTL的使用

然后启动tomcat服务器,在地址栏输入地址访问test.jsp此时浏览器显示:

EL表达式和JSTL的使用

4.jstl核心库的常用标签

4.1   if标签:

<c:if test=””>     其中test是返回boolean的条件

EL表达式和JSTL的使用

如果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属性用于指定将要迭代的集合对象