JavaWeb:EL表达式和JSTL标签库之一
Listener监听器
- Listener是JavaWeb三大组件之一(Servlet、Listener、Filter过滤器)
- Listener是JavaEE的规范,是接口。
- 监听器的作用是,监听某种事务的变化。通过回调函数,反馈给客户去做一些相应的处理
ServletContextListener监听器
ServletContextListener监听器可以监听ServletContext对象的创建和销毁。
EL表达式
Expression Language是表达式语言
主要是替代jsp页面中的表达式脚本
<!--EL表达式的格式是:-->
${表达式}
<!--EL表达式输出null值时的结果为空-->
EL表达式主要在jsp中输出数据,主要输出域对象中的数据。
EL表达式输出的数据是按照域的从小到大的顺序输出
<%
pageContext.setAttribute("key","pageContext");
request.setAttribute("key","request");
session.setAttribute("key","session");
application.setAttribute("key","application");
%>
${"key"}
<!--输出的结果为pageContext-->
<%
request.setAttribute("key", new String[]{"fire", "hello"});
%>
${key[0]}
<!--输出结果为fire-->
<!--List集合同理-->
<%
Map map = new HashMap();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
map.put("key4","value4");
request.setAttribute("key2",map);
%>
${key2.key1}
<!--输出结果为value1-->
EL表达式也是使用get方法,要确保存在该属性的get方法。
<!--非空判断-->
<%
request.setAttribute("emptyNull",null);
${empty emptyNull}
<!--返回结果为true-->
- .点运算可以输出Bean对象中的某个属性的值
- []中括号运算,可以输出有序集合中某个元素的值
- 并且[]中括号运算,还可以输出map集合中key里含有的特殊字符key的值。
<%
Map map = new HashMap();
map.put("s.e.t","value4");
request.setAttribute("key2",map);
%>
${key2['s.e.t']}
变量名 | 类型 | 作用 |
---|---|---|
pageContext | pageContextlmpl | 它可以获取jsp中的九大内置对象 |
pageScore | Map<String,Object> | 它可以获取pageContext域中的数据 |
requestScore | Map<String,Object> | 它可以获取request域中的数据 |
sessionScore | Map<String,Object> | 它可以获取session域中的数据 |
applicationScore | Map<String,Object> | 它可以获取application域中的数据 |
param | Map<String,String> | 它可以获取请求参数 |
paramVaues | Map<String,String[]> | 它可以获取请求参数,获取多个值的时候使用 |
header | Map<String,String> | 获取请求头的信息 |
headerValues | Map<String,String[]> | 获取请求头的信息,他可以获取多个值的情况 |
cookie | Map<String,Cookie> | 它可以获取当前请求的Cookie信息 |
initParam | Map<String,String> | 它可以获取web.xml中配置的 |
JSTL标签库
JSTL标签库是一个不断完善的开放源代码的JSP标签库
EL表达式是为了替代表达式脚本,而JSTL标签库是为了替代代码脚本
- 核心标签库
- 格式化
- 函数
- 数据库
- XML
- <c:set>标签
<!--使用c:set保存域对象-->
<c:set scope="page" var="key" value="value"></c:set>
<!--
scope表示存到那个域
page表示pageContext域;
request表示request域;
session表示session域;
application表示application域
var表示key
value表示value
-->
- <c:if>标签
<!--
test表示判断条件(使用EL表达式输出)
-->
<c:if test="${12==12}">
<h1>12等于12</h1>
</c:if>
<!--不支持if-else的语法-->
<c:choose>
、<c:when>
和<c:otherwise>
<!--
choose标签开始判断
when标签来判断
-->
<%
session.setAttribute("height",180);
%>
<c:choose>
<c:when test="${sessionScope.height>=190}">
<h5>很高</h5>
</c:when>
<c:when test="${sessionScope.height>=180}">
<h5>挺高</h5>
</c:when>
<c:otherwise>
<h5>不太行</h5>
</c:otherwise>
</c:choose>
<!--输出的结果为挺高-->