动态页面技术(二)
1.EL 表达式概述
EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。
2.EL 从域中取出数据(EL最重要的作用)
jsp脚本:<%=request.getAttribute(name)%>
EL表达式替代上面的脚本:${requestScope.name}
EL最主要的作用是获得四大域中的数据,格式${EL表达式}
EL获得pageContext域中的值: ${pageScope.key};
EL获得request域中的值: ${requestScope.key};
EL获得session域中的值: ${sessionScope.key};
EL获得application域中的值: ${applicationScope.key};
EL从四个域中获得某个值${key}; -->同样是依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找。
代码:
<!-- 模拟域中的数据 -->
<%
pageContext.setAttribute("company", "ACM实验室");
//存储字符串
request.setAttribute("company", "张衡教学楼");
//存储一个对象
User user = new User();
user.setId(1);
user.setName("zhangsan");
user.setPassword("123");
session.setAttribute("user", user);
//存储一个集合
List<User> list = new ArrayList<User>();
User user1 = new User();
user1.setId(2);
user1.setName("lisi");
user1.setPassword("123");
list.add(user1);
User user2 = new User();
user2.setId(3);
user2.setName("wangwu");
user2.setPassword("123");
list.add(user2);
application.setAttribute("list", list);
%>
<!-- 脚本法是取出域中的值 -->
<%=request.getAttribute("company") %>
<%
User sessionUser = (User)session.getAttribute("user");
out.write(sessionUser.getName());
%>
<!-- 使用EL表达式获得域中的值 -->
${requestScope.company }
${sessionScope.user.name }
${applicationScope.list[1].name}
<!-- 使用el表达式 全域查找 -->
${company }
${user.name }
${list[1].name}
3.EL的内置对象11个
pageScope,requestScope,sessionScope,applicationScope - 获取JSP中域中的数据
param,paramValues - 接收参数,相当于request.getParameter() rrquest.getParameterValues()
header,headerValues - 获取请求头信息,获取请求头信息相当于request.getHeader(name)
initParam - 获取全局初始化参数,相当于this.getServletContext().getInitParameter(name)
cookie - WEB开发中cookie,相当于request.getCookies()---cookie.getName()---cookie.getValue()
pageContext - WEB开发中的pageContext,pageContext获得其他八大对象
获得:项目名(上下文),这句代码不能实现获得WEB应用的名称。
获取项目的绝对路径和端口号:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
![](https://i-blog.csdnimg.cn/blog_migrate/4d5a0979cdad6aa4bd9b6a2db896065a.png)
4.EL执行表达式
例如:
<!-- el可以执行表达式运算 -->
${1+1 }
${1==1?true:false }
<!-- empty 判定某个对象是否是null 是null返回true -->
${empty list}