Web-第12天el&jstl表达学习
JSP模式&EL&JSTL
今天的内容介绍
今日内容学习目标
第一章案例:商品信息展示 1.1 要求
1.2 相关知识点 1.2.1 EL表达式概述
在JSP开发中,为了获取域对象中存储的数据,往往需要编写大量的Java代码,这会让JSP页面混乱且难以维护。 因此,JSP2.0规范中提供了EL表达式。 EL 是简单数据访问语言的缩写。 本节将对EL表达式进行详细解释。
1.2.1.1 什么是EL
EL() 目的:使JSP更容易编写。 表达式语言的灵感来自于XPath表达式语言,它提供了一种简化JSP中表达式的方法,使得Jsp代码更加简化。
1.2.1.2 EL语法
由于EL可以简化JSP页面的编写,因此在JSP的学习中掌握EL非常重要。 要使用EL表达式,您必须首先学习其语法。 EL 表达式的语法非常简单。 它们都以“${”符号开头,以“}”符号结尾。 具体格式如下:
${表达式}
1.2.1.3 EL的使用:内置对象
分类
内置对象名称
描述
范围
页面范围
范围
范围
范围
请求参数
参数
获取一个参数
获取一组参数
请求头
获取请求头
获取一组请求头
JSP 上下文对象
全局初始化参数
${.name}
${.name}
${.name}
${.name}
${名称}
//请求路径:/day18/a_el.jsp?=jack&hobby=xxx&hobby=yyy
${参数}
${参数.爱好}
${.爱好}
${.爱好[1]}
${.}
\${.-}
${['-']}
${['-'][0]}
jsp:
埃尔:${..}
${.}
${}
${公司}
${公司名称}
${公司。 价值}
1)[]用于有下标的数据(数组、列表集合)。 对于属性数据(地图、对象)
2)如果属性名包含特殊字符,必须使用[]
1.2.1.4 EL的使用:获取数据
${字符串}
${sss}
${.sss}
${arr}
${arr[1]}
${列表}
${列表[2]}
${地图}
${地图.li}
${地图2}
${map2.u2}
${map2.u2.}
${map2['3'].}
1.2.1.5 EL 的使用:运算符
${ n1 + n2 + n3 }
${1+1}
${“1”+1}
${'1'+1}
\${'a'+1}
${a+1}
${ n1 < n2 } - ${ n1 lt n2 }
${ n1 > n2 } - ${ n1 > n2 }
${ n1 = n2 } - ${ n1 ge n2 }
${ n1 == n2 } - ${ n1 eq n2 }
${n1
${n1
${ !(n1 < n2) } - ${ 不是(n1)
${ n1 < n2 ? “正确”:“错误”}
${ 用户 == null } - ${ 空用户 }
${ 用户 != null } - ${ 非空用户 }
1.2..2.2.1 什么是 JSTL
从JSP1.1规范开始,JSP支持使用自定义标签,大大降低了JSP页面的复杂度,增强了代码的复用性。 为此,很多Web应用厂商都定制了自己的应用标签库,但不同的Web应用厂商开发的相同功能的标签可能有所不同。 别无选择。 为了解决这个问题,Sun开发了一套标准标签库(Pages Tag),简称JSTL。
虽然JSTL被称为标准标签库,但实际上这个标签库是由五个不同功能的标签库组成的。 JSTL1.1规范中为5个标签库指定了不同的URI和建议前缀,如表1-7所示。
表1-1 JSTL包含的标签库
标签库
标签库的URI
字首
核
国际化
FMMT
SQL
sql
XML
号
1.2.2.2 JSTL安装与测试
通过7.3.1节的学习,您已经了解了JSTL的基础知识。 如果要在JSP页面中使用JSTL,需要先安装JSTL。 接下来一步步演示JSTL的安装和测试,如下:
1.下载JSTL包
从网站下载JSTL JAR包。 输入“”网址下载JSTL安装包---1.1.2.zip,然后解压下载的JSTL安装包。 此时可以在lib目录下看到两个JAR文件,分别是jstl.jar和.jar。 其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,.jar文件包含用于实现JSTL的.class文件以及JSTL中的五个标签库描述符文件(TLD)。
2.安装JSTL
将jstl.jar和.jar这两个文件复制到day18项目的lib目录下,如图1-16所示。
图1-1 导入jstl.jar和.jar文件
从图1-8可以看出,jstl.jar和.jar两个文件已经导入到day18项目的lib文件夹中。 这个过程相当于在day18项目中安装JSTL。 安装 JSTL 后,您可以在 JSP 文件中使用 JSTL 标记库。
3.测试JSTL
JSTL安装完成后,需要测试JSTL安装是否成功。 由于测试时使用标签,因此需要使用指令导入Core标签库。 具体代码如下:
上述代码中,指令的uri属性用于指定导入的标签库描述符文件的URI,属性用于指定导入的标签库描述符文件的前缀。 在JSP文件中使用此标签库中的标签时,所有此前缀都是必需的。
接下来编写一个简单的JSP文件test.jsp,使用指令导入Core标签库,并在该文件中使用标签,如文件1-12所示。
文件1-1test.jsp
启动服务器,打开浏览器,在地址栏输入地址“:8080//test.jsp”,访问test.jsp页面。 此时浏览器窗口显示的结果如图1-17所示。
图1-2 test.jsp
从图1-17可以看出,当使用浏览器访问test.jsp页面时,出现“Hello World!” 输出结果,可见JSTL标签库安装成功。
1.2.2.3核心标签库:if标签
在程序开发中,经常需要使用if语句进行条件判断。 如果要在JSP页面中进行条件判断,需要使用Core标签库提供的标签。 该标签专门用来完成JSP页面中的条件判断。 它有两种语法格式,如下:
语法1:没有标签体时,将结果存储到指定范围内(不常用)
[范围=“{页|||}”]/>
语法2:有标签体时,指定标签体中要输出的内容
身体
在上面的语法格式中,可以看到标签有3个属性,接下来会解释,如下:
通过前面的讲解,我们对标签有了一个简单的了解,然后用一个具体的案例来演示如何在JSP页面中使用标签。
在该目录下创建c_if.jsp文件,代码如文件1-15所示。
文件 1-2c_if.jsp
这是您第一次来访。 到网站!
启动服务器,在浏览器地址栏中输入地址“:8080//c_if.jsp”,访问c_if.jsp页面。 此时浏览器窗口显示的结果如图1-18所示。
图1-3 c_if.jsp
从图1-18可以看出,标签体中的内容显示在浏览器窗口中。 这是因为文件 1-15 中使用了标签。 执行该标签时,将使用 test 属性来判断表达式 ${==1} 是否为 true。 如果为true,则输出标签体中的内容,否则输出为空。 细绳。 由于标签的值设置为1,因此表达式${==1}的结果为true,并且将输出标签主体中的内容。
1.2.2.4核心标签库:tags
在JSP页面中,经常需要对集合对象进行循环迭代操作。 为此,Core标签库提供了一个标签,专门用于迭代集合对象中的元素,如Set、List、Map、数组等,并且可以重复执行标签体中的内容,即有两种语法格式,如下:
语法 1:迭代包含多个对象的集合
[开始=“开始”][结束=“结束”][步骤=“步骤”]>
身体
语法2:迭代指定范围内的集合
结束=“结束”[步骤=“步骤”]>
身体
在上面的语法格式中,可以看到标签有多个属性。 接下来我们对这些属性进行解释,如下:
程序开发中经常会用到标签,因此熟练掌握标签是很有必要的。 接下来通过几个具体案例来学习如何使用标签。
要使用标签来迭代数组和Map集合,首先需要向数组和Map集合中添加几个元素,然后将数组分配给标签的items属性,并将Map集合对象分配给标签的items属性,然后使用()和()方法获取Map集合中的键和值,如文件1-17所示。
文件1-.jsp
数组中的元素:
” >
${名称}
集合中的元素:
” >
${entry.key}${entry.value}
启动服务器,在浏览器地址栏中输入地址“:8080//.jsp”即可访问.jsp页面。 此时浏览器窗口中的显示结果如图1-19所示。
图1-4.jsp
从图1-19可以看出,数组中存储的元素apple、grape、和都被打印出来了,因此可以看出数组中的元素可以使用标签进行迭代。 打印出地图集合中存储的所有用户名和密码。 使用标签时,只需要将集合对象赋值给items属性,然后就可以通过entry变量获取集合中的键和值。
标签的begin、end和step属性分别用于指定循环的开始索引、结束索引和步长。 使用这些属性可以迭代集合对象中的一系列元素。
在项目目录下创建.jsp文件,使用标签的begin、end、step属性,代码如文件1-14所示。
文件1-.jsp
集合(指定迭代范围和步长)
“开始=”1”
结束=“3”步骤=“2”>
${颜色}
启动服务器,在浏览器地址栏中输入地址“:8080//.jsp”即可访问.jsp页面。 此时浏览器窗口中的显示结果如图1-20所示。
图1-5.jsp
从图1-20可以看出,浏览器窗口显示了集合和绿色两个元素。 只显示这两个元素的原因是,使用标签迭代List集合时,指定迭代的起始索引为1,迭代集合时,会先输出元素。 由于标签中指定步长为2,并且指定迭代结束索引为3,因此集合中的绿色元素也会被输出,其他元素不会被输出。 。
该标签的属性用于设置 javax..jsp.jstl.core 类型的变量。 该变量包含从集合中获取的元素的状态信息。 使用标签的属性来获取以下信息:
通过以上的讲解,读者对标签的属性有了基本的了解。 接下来将通过一个具体的案例来演示如何利用标签的属性来获取集合中元素的状态信息。
在项目目录下创建.jsp文件,代码如文件1-15所示。
文件1-.jsp
序列号
指数
是第一个元素吗
是最后一个元素吗
元素值
“=”>
${.count}
${.索引}
${.第一个}
${.最后}
${名称}
启动服务器,在浏览器地址栏中输入地址“:8080//.jsp”即可访问.jsp页面。 此时浏览器窗口中的显示结果如图1-21所示。
图1-6.jsp
从图1-21可以看出,使用标签来迭代集合中的元素时,可以通过属性获取集合中元素的序号和索引,也可以判断集合中的元素是否为第一个元素或最后一个元素。 因此,可以看出,利用该属性可以方便地获取集合中元素的状态信息。
1.2.3 MVC设计模式
MVC设计模式:模型-视图-简写。
MVC是软件工程中的一种软件架构模式。 是一种业务逻辑与显示界面分离的设计方法。 它将软件系统分为三个基本部分:模型(Model)、视图(View)和控制器()。
MVC可以方便程序的后期维护和扩展,方便程序某些部分的复用。 而且MVC还简化了程序,使其更加直观。
请注意,MVC 并不是 Java 独有的。 现在几乎所有B/S结构的软件都采用MVC设计模式。
1.2.4 JSP开发模式
SUN在推出JSP时,也提供了相应的开发模型,经历了第一代JSP、第二代、JSP Model 2三个时期。
1.2.4.1JSP第一代
JSP是一种早期的模式,适合小型web项目,而且开发成本低! 第一代时期,服务器端只有JSP页面,所有操作都在JSP页面中进行,甚至连访问数据库的API也是在JSP页面中完成。 也就是说,一切都是耦合在一起的,这对于后期的维护和扩展极为不利。
(高内聚低耦合:)
1.2.4.2 JSP第二代
第二代JSP进行了改进,将业务逻辑的内容放在中间,JSP页面负责显示和请求调度。 虽然第二代比第一代好,但它仍然让JSP做了太多的工作。 在JSP中,视图和请求调度(控制器)的工作耦合在一起。
1.2.4.3 JSP模型2
使用的技术有: 、JSP、. 它是MVC设计模式在Java语言中的具体体现。
1.2.5 三层架构
JSP模式是理论基础,但在实际开发中,我们经常会按照逻辑对服务器端程序进行分层。 一般比较常见的是分为三层,我们称之为:经典三层架构。 这三层是:表示层、业务逻辑层和数据访问层。
。 公司域名反写
..dao dao层实现
..层实现
..网络。 web层实现
..
..utils 工具
。 公司域名反写
..xxx 项目名称
..xxx.yyy 子模块
..xxx.yyy.dao子模块dao层接口
..xxx.yyy.dao.impl 子模块dao层实现类
..xxx.yyy。 子模块层接口
..xxx.yyy..impl 子模块层实现类
..xxx.yyy。 子模块(子模块 yyy 可以省略)
..xxx.yyy.web。 子模块网络层,
..xxx.yyy.web。 子模块网络层,
..xxx.utils 工具
..xxx。 自定义例外
..xxx。 持续的
1.3 案例实现
${p.pname}
商场价格: ¥${p.}
第二章小结