本节概要
EL介绍
EL从域中取数据
EL内置对象
EL表达式
什么是EL?
express Language.是一种嵌入到JSP页面的表达式语句,目的是为了减少并替代JSP脚本的书写!
总之就是偷懒的工具。
EL从域中取数据
我们使用JSP脚本和EL之间的取数据进行比较
<body>
<%-- 准备数据 --%>
<% request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
request.setAttribute("name", "jerry");
User user = new User();
user.setName("汉三");
user.setPassword("123");
session.setAttribute("user",user);
List<User> list = new ArrayList<User>();
User user1 = new User();
user1.setName("李四");
user1.setPassword("12");
User user2 = new User();
user2.setName("王五");
user2.setPassword("132");
list.add(user1);
list.add(user2);
application.setAttribute("list", list);
%>
<!-- 获得单个数据 -->
<%=request.getAttribute("name") %>
${requestScope.name }
<!-- 获得对象数据 -->
<%
User user3 = (User)session.getAttribute("user");
out.write(user3.getName());
%>
${sessionScope.user.name }
<!-- 获得集合数据 -->
<%
List appList = (List)application.getAttribute("list");
User user4 = (User)appList.get(0);
out.write(user4.getName());
%>
${applicationScope.list[0].name }
</body>
从上面的代码可以看出,我们使用了el语句的一句话便代替了许多的Jsp脚本代码。
而还有一个最重要的方法${key}。这个在上篇博文中,我们提到,pageContext的findAttribute(String)方法,而这个${key}的方法底层就是使用了findAttribute(String)方法!
而${}获得值也是依次从page域到request域到session域到application域的!并且这个方法比较常用!
EL的11个内置对象
因为在上篇博文中提到的JSP某些历史原因,我们对这11个内置对象已经不必太掌握了。因为这些都是一些关于页面处理而使用的对象,如在上篇博文JSP中提到的,如果我们在Jsp发展的第二时期的话,那么这些就是重点,但是现在我们已经只是把Jsp作为页面显示的工具了,页面处理已经交给了servlet了,因此这个知识我们了解亦可。
获得Jsp域对象数据:
pageScope、requestScope、sessionScope、applicationScope
接受参数
param、paramValue相当于request.getParameter(name)与request.getParameterValues()
获取头信息
header、headerValues相当于request.getHeader(name)与request.getHeaderValues();
获取全局初始化参数信息
initParam相当于this.getServletContext().getInitParameter(name);
获得Cookie
cookie相当于request.getCookies()--request.getName()--request.getValues()
获得pageContext对象
pageContext:注意这里我们通过获得了pageContext对象就可以获得到其他的八大内置对象
另外上边写的获得Jsp域对象数据并非是获得了Jsp域对象的全部,而只是域中的数据。
最重要的一行代码:${pageContext.request.contextPath}相当于request.getContextPath();
这句代码在开发中会经常用到.
有了这句话,我们就可以在url中动态的书写项目名了。类似这样的
直接在字符串中使用即可,WEB容器在翻译Jsp页面时会自动的判断的
。
EL表达式
和Jsp脚本一样。在El里也有表达式。例如
${1+1}就是一个表达式,我们也可以在页面上输出。
另外,类似这样的表达式
${user!=null?"user不为null":"user是null的"}
最后,在el中还有自己的“关键字"empty,目的就是判断一个对象是否为null
${empty user}就与${user==null?true:false}是相同的