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

posted on 2018-11-29 21:21  Black_m  阅读(5408)  评论(0编辑  收藏  举报

导航