JSP&EL&JSTL
1、jsp:
1、指令
*作用:用于配置警示牌页面、导入资源文件
*格式:<%@ 指令名称 属性名1 = 属性值1 属性名2 = 属性值2 属性名3 = 属性值3.... %>
(多个属性名间用空格隔开。 )
*分类有三种指令:
1、page:配置jsp页面的
*contentType:等同于response.setContentType
1、设置响应体的mime类型以及字符集
2、设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
*import:导包,例如jsp代码中写Java代码,新建一个集合,需要导包,就用这个。
*errorPage:当前页面发生异常后会自动跳转到指定的错误页面
*errorPage:标识当前页面是否是错误页面
*true:是,可以使用功能内置对象exception,可以通过它将错误信息打印到日志上
*false:否,默认值。不可以使用内置对象exception
2、include:用以引入其他页面。导入页面的资源文件
*<@%include file="top.jsp"%>
3、taglib:导入资源,例如导入jstl、EL、jQuery等
*<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
*prefix:前缀,自定义的,例如:<c:if test="111"></c:if>
2、注释
1、html注释:
<!-- -->:只能注释html代码片段
2、jsp的注释:推荐
<%-- --%>:可以注释html和脚本等所有jsp代码
3、内置对象
*在jsp页面中不需要创建,直接使用的对象
*一共有9个
变量名 真实类型 作用
*pageContext(域) pageContext 作用于同一个页面,同一个页面均可以访问pageContext的数据(该变量里面的方法可以用于获取另外8个内置对象)
*request HttpServletRequest 作用于一次请求的生命周期,同一个请求内都可以访问该域中的数据
*session HttpSession 一次会话的多个请求间
*application ServletContext 所有用户间共享数据,作用域最大,而且唯一,服务器开启既生成,关闭既销毁
*response HttpServletReponse 响应对象
*page Object 当前servlet的对象
*out JspWriter 输出对象,数据输出到页面上
*config ServletConfig servlet的配置对象
*exception Throwable 异常对象
2、mvc开发模式
3、EL表达式
1、概念:expression language 表达式
2、作用:替换和简化jsp页面中Java代码的编写
3、语法:${表达式},例如 : ${3>4},返回false
4、注意:
*jsp默认支持EL表达式,如果要忽略EL表达式:
1、设置jsp中page指令中:isELIgnored="ture",忽略当前jsp页面中所有的EL表达式
2、\${表达式}:忽略当前这个EL表达式,加一个\
5、使用:
1、运算:
*运算符:
1、算数运算符:+ - * / (div) % (mod) ---->返回计算后的值
2、比较运算符:>(大于) <(小于) >=(大于等于) <=(小于等于) ==(等等于) != (不等于) ------>返回true或者false
3、逻辑运算符:&&、||、! ------>返回true或者false
4、空选算符:empty
*功能:用于判断字符串、集合、数组对象是否为null并且长度是否为0
*${empty list},判断list是否为null,或者长度为0
*${not empty list},判断list是否不为null,且长度大于0
2、获取值
1、EL表达式只能从域对象中获取值
2、语法:
1、${域名城.键名}:从指定域中获取指定键的值
*域名称:
1、pageScope ------>pageContext
2、requestScope ------>request
3、sessionScope ------>session
4、applicationScope ----->application(ServletContext)
*举例:在request域中存储了name=张三:request.setAttribute("name","张三");
*获取:${requestScope.name}
*如果没有获取到值,会显示空字符串,不会报错或者打乱页面
2、${键名}:表示依次从最小的域中开始查找是否有该键对应的值,知道找到为止。
3、获取对象、list集合、map
*获取对象中的值:${requestScope.user.name}或者${user.name} ------- ${域名.键名.属性名}
*获取list中的值:${requestScope.userList[0]}或者${requestScope.userList[0]} -------- ${域名.键名[索引]}
*获取list中对象元素的属性值:${requestScope.userList[0].name}
*获取map集合中的值:${requestScope.userMap.name} 或者${requestScope.userMap["name"]} -----${域名称.键名.key名称}或者${域名称.键名["key名称"]}
3、隐式对象:
*EL表达式中有11个隐式对象
*pageContext:
*${pageContext.request.contextPath}:用于动态获取项目的虚拟目录:比如用于拼接请求路径: “${pageContext.request.contextPath}/index.action"
4、JSTL标签
1、概念:JavaServer PagesTag Library jsp标准标签库
*是由Apache组织提供的开源的免费的jsp标签
2、作用:用于简化和替换jsp页面上的Java代码(用于尽量不写Java代码,写成标签样式)
3、使用步骤:
1、导入JSTL相关jar包
2、引入标签库:使用taglib指令:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4、常用的JSTL标签
1、if ------------- :相当于Java代码的if语句
test中是该if语句的条件,成立则执行该if标签内的代码,通常与El表达式结合使用
<c:if test="${3>4}"></c:if>
2、choose --------- :相当于Java代码的switch语句:
<c:choose>
<c:when test="${x==1}">x是1</c:when>
<c:when test="${x==2}">x是2</c:when>
<c:when test="${x==3}">x是3</c:when>
<c:when test="${x==4}">x是4</c:when>
<c:otherwise>未匹配到数字</c:otherwise>
</c:choose>
3、foreach --------- :相当于Java代码的for语句
*属性:
begin:开始值(相当于int i = 0,从0开始循环,包含0)
end:结束值(相当于i<=10),循环到10结束,包含10)
var:临时变量
step:步长(相当于i++,一次增长多少)
varStatus:循环的状态对象,里面有一些可用的方法,例如:index:容器中元素的索引,从0开始,count是循环的次数,从1开始计算
如下:循环10次,每次打印i,会打印入1到10
<c:forEach begin="1" end="10" var="i" step="1" varStatus="s">
${i}<br>
${s.index}
$(s.count)<br>
</c:forEach>
重点:遍历容器:
如下便可遍历打印出list集合中的所有元素:
<c:forEach items="${list}" var="str" varStatus="s">
${str}
</c:forEach>

浙公网安备 33010602011771号