JavaWeb学习笔记:初识EL表达式和JSTL

1.EL表达式

1.1 概念Expression Language的简称,意为表达式语言,是JSP2.0中引入的一种计算和输出Java对象的简单语言。需Web服务器能够支持Servlet2.4/JSP2.0。

1.2 基本语法以“${”开头,以"}"结束,中间为合法的表达式。语法格式为${expression}

1.3 EL表达式的禁用

1.3.1 使用"\"符号禁用EL表达式\${expression}

1.3.2 使用page指令禁用EL表达式<%@page isELIgnored="false" %>

1.3.3 在web.xml文件中配置元素

     

          

               *.jsp

               true

         

     

1.4.EL表达式中使用的变量范围前缀

EL表达式中使用的变量范围前缀

范围

前缀

说明

page

pageScope

例如,${pageScope.username}表示在page范围内查找username变量,若查无变量则返回null

request

requestScope

例如,${requestScope.username}表示在request范围内查找变量username,若查无变量则返回null

session

sessionScope

例如,${sessionScope.username}表示在session范围内查找变量usernmae,若查无变量则返回null

application

applicationScope

例如,${applicationScope.username}表示在application范围内查找变量username,若查无变量则返回null

1.5.EL表达式中的隐含对象

1.5.1 pageContext对象:访问JSP内置对象,如request、response、out、session、config、servletContext等。例如,以下语句使用EL表达式获取session中的变量username。

       ${pageContext.session.username}

1.5.2 param和paramValues对象:param对象用于获取请求参数的值,返回字符串;如果一个参数名对应多个值,则需使用paramValues,返回数组。

      例如:

             在页面中有一个名为username的文本框

            

            使用param获取username文本框的值

             ${param.username}

      或

            在页面中有一个名为favor的复选框组

           体育

           美术

           音乐

           使用paramValues获取每一项值

           ${paramValues.favor[0]}  ${paramValues.favor[1]}  ${paramValues.favor[2]}

2.JSTP:

2.1 概念:JavaServer Pages Standard Tag Library,JSP标准标签库,为JavaWeb开发人员提供一个标准的、通用的标签库。

2.2 配置JSTL:JSTL下载地址:http://tomcat.apache.org/download-taglibs.cgi。下载taglibs-standard-impl-1.2.5.jar、taglibs-standard-spec-1.2.5.jar、taglibs-standard-jstlel-1.2.5.jar、taglibs-standard-compat-1.2.5.jar,并将jar包复制到项目的WEB-INFO下的lib中。

2.3 JSTL的使用:使用JSTL标签之前必须首先在JSP页面的首行使用<%@ tablib %>指令定义标签库的位置和访问前缀。格式如下:

      使用核心标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

      使用格式标签库:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

      使用SQL标签库:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

      使用XML标签库:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

      使用函数标签库:<%@ taglib prefix="fm" uri="http://java.sun.com/jsp/jstl/functions" %>

2.4 JSTL核心标签库:表达式标签、条件标签、循环标签、URL操作标签

2.4.1 表达式标签

(1)输出标签:用于将表达式的值输出到JSP页面中,可以替代<%=表达式%>。语法格式如下:

  语法一:没有标签体 

  语法:有标签体     标签体

  两种格式输出的结果相同。标签的属性说明如下:

标签的属性说明

属性

类型

描述

使用EL

value

Object

用于指定将要输出的变量或表达式

可以

escapeXml

boolean

用于指定是否转换特殊字符,默认为true,表示转换,如“<”转换为"<"

不可以

default

Object

用于指定当value属性值等于null时,要显示的默认值

不可以

     

(2)设置标签:在指定范围(page、request、session或application)内定义保存某个值的变量,或为指定的对象设置属性值。语法格式如下:

  语法一:在scope指定的范围内将指定的值存储到变量中

                

  语法:在scope指定的范围内将标签主体存储到变量中

                   标签主体 

  语法三:将指定的值存储在target属性指定的目标对象的propName属性中

                

  语法四:将标签主体存储在target属性指定的目标对象的propName属性中

                标签主体

set>标签的属性说明

属性

类型

描述

使用EL

value

Object

指定变量值

可以

var

String

指定变量名

不可以

target

Object

指定存储变量值或标签主体的目标对象,可以是JavaBean或Map集合对象

可以

property

String

指定目标对象存储数据的属性名

可以

scope

String

指定变量的作用域,默认为page

不可以

     

(3)移除标签:从指定的JSP范围内移除指定的变量。语法格式如下:

          

remove>标签的属性说明

属性

类型

描述

使用EL

var


指定要移除的变量名


scope


指定变量的存在范围






     

(4)捕获异常标签:捕获程序出现的异常;将异常信息保存在变量中。语法如下:

           可能存在异常的代码

2.4.2 条件标签     

(1)标签:根据不同条件处理不同业务。语法格式如下:

         

                 标签主体

         

if>标签的属性说明

属性

类型

描述

使用EL

test

boolean

必选属性,指定条件表达式

可以

var

String

可选属性,指定变量名,保存test属性的判断结果

不可以

scope

String

变量的存在范围

不可以

     

(2)标签标签可根据不同条件完成不同的业务逻辑,如没有符合条件,则执行默认条件的业务逻辑。标签只能作为的父标签。这3个标签的语法格式如下:

        

            

                   业务逻辑

            

              ......  多个

           

               业务逻辑

               一个只能有一个

      

2.4.3 循环标签     

(1)标签:根据循环条件遍历数组和集合类中的所有或部分数据。语法格式如下:

  语法一:数字索引迭代

                     标签主体

  语法:结合成员迭代

                   标签主体

forEach>标签的属性说明

属性

类型

描述

使用EL

items

数组、集合、字符串、枚举

被循环遍历的对象,多用于数组和集合类

可以

var

String

循环体的变量,存储items指定的对象的成员

不可以

begin

int

循环的起始位置

可以

end

int

循环的终止位置

可以

step

int

循环的步长

可以

varStatus

String

循环的状态信息,见下表

不可以

     

varStatus属性的状态属性
属性
类型
描述
index
int
当前循环的索引值,从0开始
count
int
当前循环的循环计数,从1开始
first
boolean
是否为第一次循环
last
boolean
是否为最后一次循环

(2)标签:用指定的分隔符将一个字符串分割,根据分割的数量确定循环次数。语法格式如下:

        

                标签主体

        

forTokens>标签的属性说明

属性

类型

描述

使用EL

items

String

被遍历的对象,多用于数组和集合类

可以

delims

String

字符串的分割字符,可同时有个分割字符

不可以

var

String

变量的名称

不可以

begin

int

循环的起始位置

可以

end

int

循环的终止位置

可以

step

int

循环的步长

可以

varStatus

String

循环的状态变量

不可以

2.4.4 URL操作标签     

(1)文件导入标签:导入站内或其他网站的静态和动态文件到Web页面中。语法格式如下:

  语法一

                       标签主体

               

  语法

import>标签的属性说明

属性

类型

描述

使用EL

url

String

被导入的文件资源的URL路径

可以

context

String

上下文路径,用于访同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则url属性的值必须以“/”开头

可以

var

String

变量名称,存储获取的资源

不可以

scope

String

变量的存在范围

不可以

varReader

String

以Reader类型存储被包含文件的内容

不可以

charEncoding

String

被导入文件的编码格式

可以

     

(2)重定向标签:将客户端发出的request请求重定向到指定的URL服务端,期间可对请求中的属性进行添加或修改。语法格式如下:

  语法一

  语法 ...多个 

redirect>标签的属性说明

属性

类型

描述

使用EL

url


带定向资源的URL

可以

context


上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头

不可以

     

(3)生成URL地址标签:生成一个URL路径的字符串,该字符串可用于HTML的标记超链接,或者使用该URL字符串进行页面重定向等。语法格式如下:

  语法一

  语法   

url>标签的属性说明

属性

类型

描述

使用EL

value

String

要处理的URL地址

可以

context

String

上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头

可以

var

String

变量名,保存生成的URL字符串

不可以

scope

String

变量的存在范围

不可以





     

(4)参数传递标签:只用于为其他标签提供参数,可与组合实现动态定制参数。语法格式如下:

         

param>标签的属性说明

属性

类型

描述

使用EL

name


参数名

可以

value


参数值

可以

     

你可能感兴趣的:(JavaWeb,JSP)