一、EL表达式的介绍和应用
1、什么是EL:
EL即Expression Language(表达式语言),是一种在jsp页面获取数据的简单方式;重点:只能获取数据,不能设置数据。
2、为什么要使用EL表达式:
因为在javaBean在JSP中的局限性,获取javaBean属性必须要实例化和强制类型转换。所以我们需要用EL表达式来简化它。
<%
Employee employee = (Employee)request.getAttribute("employee");
Computer comp = employee.getComputer();
String manufacturer = comp.getManufacturer();
%>
ps:如果页面编写出现逻辑错误,将会导致代码执行错误,并且jsp页面编译页面时也会产生错误。
3、EL的语法格式:
在jsp的任何静态部分都可以通过。
${ EL exprission }
${ bean.name } 或 ${ bean['name'] }
来获取指定表达式的值。
ps:${bean.name}实质是调用bean的getName()方法
4、EL获取数据(有四个属性范围):
分别是:page:当前页面,request:两个页面之间
session:浏览器级别,application:服务器级别
怎么区别不同的作用域·:
分别使用:pageScope;requestScop,sessionScope,applicationScope。分别在作用域后面加Scope。
ps:如果没有使用内置对象,则查找数据顺序是依次按照有小到大从四个属性范围开始,而加上作用域后就能查找指定名称的属性值。
二、jstl标签
1、什么是JSTL?
JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以及指定标签库而已!
2、JSTL标签库:
JSTL一共包含四大标签库:
- core:核心标签库,我们学习的重点;
- fmt:格式化标签库,只需要学习两个标签即可;
- sql:数据库标签库,不需要学习了,它过时了;
- xml:xml标签库,不需要学习了,它过时了。
3、使用taglib指令导入标签库:
除了JSP动作标签外,使用其他第三方的标签库都需要:
a、导包;
b、在使用标签的JSP页面中使用taglib指令导入标签库;
下面是导入JSTL的core标签库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- prefix="c":指定标签库的前缀,这个前缀可以随便给值,但大家都会在使用core标签库时指定前缀为c;
- uri="http://java.sun.com/jstl/core":指定标签库的uri,它不一定是真实存在的网址,但它可以让JSP找到标签库的描述文件;
四、forEach标签:
forEach当前就是循环标签了,forEach标签有多种两种使用方式:
使用循环变量,指定开始和结束值,类似for(int i = 1; i <= 10; i++) {};
循环遍历集合,类似for(Object o : 集合);
<!-- for循环 -->
<T277:forEach begin="1" step="10" end="100" var="i">
${i }<br>
</T277:forEach>
<hr>
<!-- 遍历集合 -->
<T277:forEach items="${ulist }" var="user">
${user.uname }____${user.upwd }<br>
</T277:forEach>
五、if标签
1、if标签的test属性必须是一个boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行。
例如:
<T277:if test="${true }">
这是成立的
</T277:if>
<T277:set var="a" value="19"></T277:set>
<T277:if test="${a>=10 }">
<h1>大于等于10</h1>
</T277:if>
<T277:if test="${a<10 }" var="name">
<h1>小于10</h1>
</T277:if>
<T277:out value="${name }"></T277:out>
ps:value是定义var的值
第二种:
<!-- 本页面:如果用户登录 就显示欢迎XXX,如果没有登录就显示登录的表单
empty:判断对象是否为空,为空返回true
not empty:判断对象不为空,不为空就返回true
-->
<T277:if test="${not empty u }">
欢迎:${u.uname }
</T277:if>
<T277:if test="${empty u }">
<form action="dologin.jsp">
用户名:<input type="text" name="uname"><br> 密码:<input
type="password" name="upwd"><br> <input type="submit"
value="登录">
</form>