1,EL是JSP内置的表达式语言。不用<%%>包围
--》从jsp2.0开始,就不再适用java脚本,而是使用EL表达式和动态标签来代替java脚本;
--》EL表达式的效果等同于<%=。。。%>,EL只能做输出。
2,EL表达式读取四大域:
--》$(xxx),全域查找名为xxx的属性,如果不存在,输出空字符串,而不是null。全域查找时,先从小域开始查找。
--》$(pageScope.xxx)、$(requestScope.xxx)、$(sessionScope.xxx)、$(applicationScope.xxx)指定域获取属性。
<body>
<%
pageContext.setAttribute("name","page_zhangsan");
request.setAttribute("name","request_lisi");
session.setAttribute("name","session_wangwu");
application.setAttribute("name","application_zhaoliu");
%>
${name }<br />
${pageScope.name}<br />
${requestScope.name }<br />
${sessionScope.name }<br />
${applicationScope.name }<br />
</body>
3,javabean导航
<body>
<%
Address address=new Address();
address.setCity("上海");
address.setStreet("浦东开发区一街");
User user=new User();
user.setAddress(address);
user.setAge(20);
user.setSex("男");
user.setUsername("张三");
request.setAttribute("user",user);
%>
${user.address.city}<!--相当于使用getXXX方法-->
<br />
${ user.address.street}
</body>
4,EL的内置对象
EL共有11个内置对象,无需创建可以直接使用,这11个内置对象中有10个是Map类型的,最后一个是pageContext对象。
pageScope:
requestScope:
sessionScope:
applicationScope:
param:对应参数,是一个map,其中key为参数名,value为参数值,适用于单值的参数;
paramValues:对应参数,是一个map,其中key为参数名,value为多个参数值,适用于多值的参数;
header:对应请求头,是一个map,其中key表示头名称,value是单个头值,适用于单值请求头;
headerValues:对应请求头,是一个map,其中key表示头名称,value是单个头值,适用于单值请求头;
initParam:获取<context-param>中的初始化参数,平时很少用
cookie:Map<String,Cookie>,其中key是cookie的name,value是cookie的对象
pageContext:是pageContext类型。${pageContext.request.method}
<body>
${param.username }<br />
${paramValues.hobby[0] }<br />
${paramValues.hobby[1] }<br />
<hr />
${header['User-Agent']}
<hr />
${initParam.xxx }<br />
${initParam.yyy }
<hr />
${cookie.JSESSIONID.name }<br />
${cookie.JSESSIONID.value }
<hr />
${pageContext.request.contextPath }<!-- 获取项目名,非常重要 -->
<hr />
${pageContext.session.id }<!--另一种不使用cookie获取sessionid的方法 -->
</body>