El技术
概述
El表达式与Jsp代码类似,使用El表达式代替Jsp脚本,简化Jsp脚本的编写
El从域中取出数据(El最重要的作用)
使用Jsp脚本代码从request域中取出指定属性name,并且out.write()
<%=request.getAttribute(name)%>
使用El表达式实现:
${reqeustScope.name}
格式
${El表达式}
EL获得pageContext域中的值:${pageScope.key};
EL获得request域中的值:${requestScope.key};
EL获得session域中的值:${sessionScope.key};
EL获得application域中的值:${applicationScope.key};
需要取出对象的子属性,El表达式:
${xxxScope.yyy.zzz}
需要取出集合里面的元素,El表达式为:
${xxxScope.yyy[i]}
常用
EL从四个域中获得某个值${key};
同样是依次从pageContext域,request域,session域,application域中获取属性,
在某个域中获取后将不在向后寻找
El的内置对象11个
不常用
pageScope ---
requestScope |--获取Jsp域中的数据
sessionScope |
applicationScope ---
param ---
|--接收请求的参数
paramValues ---
header ---
|--接收请求头信息
headerValues ---
initParam ---获取全局初始化参数
cookie ---对应web应用中的cookie
常用
pageContext
Jsp中pageContext,可以获取其他8大内置对象
<--常用-->
<--取出所部署项目的名字-->
${pageContext.request.contextPath}
El执行表达式
${xxx==xxx?条件:条件} //三元表达式
${empty 判定某个对象是否为null 是null返回true}
Jstl
概述
JSTL(JSP Standard Tag Library),Jsp标准标签库,嵌入Jsp页面使用标签的形式完成业务逻辑
标准标签库
| 标签库 | 标签库的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 |
Jstl导入与下载
Jstl下载
从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指令导入核心标签库,并且给定前缀
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Jstl核心库常用标签
if标签
在Jsp文件中需要条件判断就需要if标签
语法1:没有标签体的情况下,将结果存放到指定的作用域
<c:if test="testCondition" var="result" [scope="{page|request|session|application}"]/>
语法2:在有标签体的情况下,在标签体中制定要输出的内容
<c:if test="testCondition">
body content
</c:if>
属性:
- test属性用于设置逻辑表达式
- var属性用于指定逻辑表达式中变量的名字
- scope属性用于指定var变量的作用范围,默认为page。如果test的计算结果为true,那么标签体将被执行,否则标签体不会被执行
forEach标签
该标签专门为迭代集合对象中的元素,如Set、List、Map、数组等,并且重复执行标签体中的内容,它有两种语法格式
语法1:迭代包含多个对象的集合
<c:forEach [var="varname"] item="collection" [varStatus="varStatusnam"]
[begin="begin"] [end="end"] [step="step"]>
body content
</c:forEach>
语法2:迭代指定范围内的集合
<c:forEach [var="varname"] [varStatus="varStatusnam"]
[begin="begin"] [end="end"] [step="step"]>
body content
</c:forEach>
属性
- var属性用于将迭代获取的元素保存到page域中
- items属性用于指定要迭代的对象
- varStatus属性用于指定当前迭代信息的对象保存到page域中
- begin属性用于指定从几个中第几个元素进行迭代
- end属性用于指定需要迭代的元素索引范围
- step属性用于指定每次迭代的步长
varStatus
使用<c:forEach>标签的varStatus属性可以获取下列信息
- count:表示元素在集合序号,从1开始计数
- index:表示当前元素在集合中的索引,从0开始计数
- first:表示当前是否为集合中的第一个元素
- last:表示当前是否为几个钟的最后一个元素
javaEE的开发模式
MVC
- M:Model —模型 JavaBean:封装数据
- V:View —视图 jsp:单纯进行页面显示
- C:controller —控制器 Servelt:获取数据–对数据进行封装–传递数据–指派显示的jsp页面
JavaEE三层架构
- web层:与客户端交互
- service层:复杂业务处理
- dao层:与数据库进行交互
流程图如下: