1.EL运算
1.1 语法:${EL表达式}
(1) EL不需要导包
(2) EL中调用属性,其实是调用的getXxx()方法
2.2 .与[]操作符
.操作符: 操作属性,不是对象,使用方便 ${范围.对象.属性.属性的属性 }
[]操作符: 如果是常量属性,需要使用双引号/单引号,但比点操作符更加强大
2.3 []优点之处
(1) 可以容纳一些 特殊符号 (. ? -)
(2) []可以容纳 变量属性 (可以动态赋值)
(3) 可以处理数组 ${requestScope.arr[0] }
2.JSTL
2.1 两个jar包及引入
(1) jstl.jar
(2) standard.jar
(3)引入:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2.2 通用标签库
2.2.1 <c:set> :赋值
(1)给变量赋值
<c:set var="变量名" value="变量值" scope="4个范围对象的作用域"/>
(2)给普通对象的属性赋值
<c:set target="对象" property="对象的属性" value="赋值" />
注意 <c:set>可以给不存在的变量赋值 (但不能给不存在的对象赋值)
2.2.2 <c:out> :显示
<c:out value='<a href="https://www.baidu.com">百度</a>' default="当value为空的,显示的默认值" escapeXml="true" />
2.2.3 <c:remove> :删除属性
<c:remove var="a" scope="request"/>
2.3 条件标签库
2.3.1 单重选择
<c:if test="">
2.3.2 多重选择
<c:choose>
<c:when test="..."> </c:when>
<c:when test="..."> </c:when>
<c:when test="..."> </c:when>
<c:otherwise> </c:otherwise>
</c:choose>
注:在使用test=""一定要注意后面是否有空格
2.4 迭代标签库(循环)
for(int i=0;i<5;i++)
<c:forEach var="name" items="${requestScope.names }" >
${name}
</c:forEach>
3. 过滤器
3.1 过滤器简介
(1) 实现Filter接口
(2) init()、destroy() 原理、执行时机同Servlet
(3) 通过doFilter()处理拦截,并且通过chain.doFilter(request, response)放行
3.2 filter映射
(1) 只拦截 访问MyServlet的请求
<url-pattern>/MyServlet</url-pattern>
(2) 拦截一切请求
<url-pattern>/*</url-pattern>
3.3 通配符
dispatcher请求方式:
REQUEST:拦截HTTP请求(get、post)
FORWARD:只拦截通过请求转发方式的请求
INCLUDE: 只拦截拦截通过request.getRequestDispatcher("").include()、通过<jsp:include page="..." />此种方式发出的请求
ERROR: 只拦截<error-page>发出的请求
3.4 过滤器链
可以配置多个过滤器,过滤器的先后顺序是由 <filter-mapping>的位置决定