El&Jstl技术

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层:与数据库进行交互

流程图如下: 三层架构图