一、EL表达式使用
1.El表达式可以在jsp中使用,EL表达式是用"${}"括起来的脚本
2.EL表达式提供了获取对象以及属性的简单方式。
例如:${ person } 相当于 request.getAttribute("person")或session.getAttribute("person")
${person.age} //获取对象中的属性
${person.sex}
代码中先使用useBean行为将Person对象放置到request中,在使用El表达式读取对象
3.El从隐藏对象中获取内容
${ param.foo } 读取地址栏参数 相当于request.getParameter("foo")
${ initParam.foo } 读取初始化参数 相当于config.getInitParameter("foo")
${ header.host } 读取head参数 相当于request.getHeader("host")
4.jsp中有九个隐含对象,在EL中的对应
隐含对象 |
类型 |
说明 |
pagecontext |
Javax.servlet.ServletContext |
表示此jsp页面的PageContext |
pageScope |
Java.util.Map |
获取page范围属性名称所对应的值 |
requestScope |
Java.util.Map |
获取request范围属性名称所对应的值 |
sessionScope |
Java.util.Map |
获取session范围属性名称所对应的值 |
applicationScope |
Java.util.Map |
获取application范围属性名称所对应的值 |
param |
Java.util.Map |
如同: ServletRequest.getParameter(String name) 回传String类型的值 |
cookie |
Java.util.Map |
如同:HttpServletRequest.getCookie() |
initParam |
Java.util.Map |
如同: HttpContext.getInitParamter(String name) |
|
|
|
在jsp页面里面获取application中的内容:${applicationScope.msgA}
获取session中的内容: ${sessionScope.msgS}
获取request中的内容:${requestScope.msgR}
表达式中的applicationScope….也可以省略${msgA}….系统会在动查找,查找范围是page---request----session----application。
6.EL获取页面参数值
若里面存放的是javabean对象类型user的值是可以用:${user.name},${user.password}获得。
如果javabean中含有集合类型的参数<list>phones可用${user.phones[0]}获得javabean中集合类型参数中的第一个值。
若传进这个页面的内置对象中含有集合类型的参数 <list>users,可用:${users[0].name}获得。
若一个页用<a href=”p2.jsp?n=3&m=4”>下一页面</a>在下一页面可用${param.n}的n的值${param.m}获得m的值。
7.El也可以获取cookie和web.xml的值
向页面中添加cookie的值 response.addCookie(”username”,”Tom”);则在下一页面可用${cookie.username.value}获得cookie中值。
对于一些初始化参数:如在web.xml中设置
<context-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</context-param>
用${initParam.encoding}获得encoding的值。
8. El 可以和常量混用:如果session里面保存有key=”str” value=”河”,则可以用${session.str}南 在页面上显示 “河南”。相当于<%=session.getAtribute(str).toString()+”南”%>EL中也可以进行 算数运算 也可以进行 逻辑运算
二、jstl标签库
1.导入jstl的核心标签库<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
2.在页面输出内容用标签;<c:out ></c:out>
<%
session.setAttribute("str","<b>你是好人!</b>");
%>
<c:out value="${str}" default="我也是好人" escapeXml="false"></c:out>
3.保存数据用标签<c:set> </c:set>,向session中保存变量名为he变量值为hello。
<c:set value="hello" var="he" scope="session"></c:set>
4.删除值<c:remove></c:remove>,删除session中的str变量名。
<c:remove var=”str” scope=”session”></c:remove>
5.条件选择标签<c:if></c:if>,系统自动从session,request,等中查找变量并进行判断
<% session.setAttribute("num",50); %>
<c:if test="${num >= 50}">
及格
</c:if>
<c:if test="${num < 50}">
不及格
</c:if>
6.多重判断标签<c:choose></c:choose>
<% session.setAttribute("sum",75); %>
<c:choose>
<c:when test="${sum>=90&&sum<=100}">优秀</c:when>
<c:when test="${sum>=80&&sum<90}">良好</c:when>
<c:when test="${sum>=60&&sum<80}">中等</c:when>
<c:when test="${sum>=0&&sum<60}">不及格</c:when>
<c:otherwise>信息无效</c:otherwise>
</c:choose>
7.循环标签<c:forEach></c:forEach>,打印集合books中的内容
<c:forEach items="books" var="book">
${book}
</c:forEach>
如果是对象类型的集合
<c:forEach items="stus" var="stu">
${stu.name}, ${stu.password }
</c:forEach>
复杂集合,HashMap类型的集合
<c:forEach items="hm" var="content">
${content.key},${content.value }
</c:forEach>
8.打印出有分割符分割开的一个字符串<c:forTokens></c:forTokens>
<c:forTokens items=”字符串” delims=”分隔符” var=”子串名”>
${子串名}
</c:forTokens>
9.显示固定格式的日期时间
首先要引入标签库<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"prefix="fmt"%>
<% Date date = new Date() ;
%>
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd"/>