EL【Expression Language】
概述:EL(Expression Language) jsp的内置表达式语言,从jsp2.0开始 用来替代jsp的脚本 <%=..%>
格式:${el表达式}
作用:
1.获取域中数据 ★
2.执行运算 ★
3.获取常见的web对象
4.调用java的方法
获取域中数据:★
注意:★
若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取
例如:${requestScope["arr.age"] }
★获取简单数据
${pageScope|requestScope|sessionScope|applicationScope.属性名}
以后经常使用:
${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找。若查找不到,返回""即空串
★获取复杂数据
获取数组中的数据
${域中的名称[index]}
获取list中的数据
${域中的名称[index]}
获取map中的数据
${域中的名称.键名}
★执行运算:
四则运算 关系(>..) 逻辑(&& ||)
注意:
+:只能进行加法运算,字符串形式数字可以进行加法运算.【数字和非数字的字符串相加会报错】
empty:判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空
${empty 域中的对象名称}
三元运算符等等。
el的内置对象(了解) 11个
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
haederValues
initParam
cookie★
pageContext★
注意:
除了pagecontext其余对象获取的全是map集合
了解:和参数相关的el内置对象
params
paramValues
了解:和请求头相关的el内置对象
header
haederValues
了解:和全局初始化参数相关的el内置对象
initParam
【重要&掌握】cookie内置对象:
${cookie} 获取map{key=Cookie}
例如:创建cookie
Cookie c=new Cookie("username","tom");
通过${cookie}获取相当于
{username=new Cookie("username","tom")}
相当于map的key是cookie的键
map的value是当前cookie
若项获取名称username的cookie的value值(获取tom)
${cookie.username.value}--javabean导航
注意:
java中Cookie的api
getName():获取cookie的名称
getValue():获取cookie的value值
我们称name和value是cookie的bean属性
使用cookie内置对象:
${cookie.给cookie起名字.value}
例如:
获取jsession的值
${cookie.JSESSIONID.value}
【重要&掌握】pageContext:获取不是map集合,相当于jsp的pageContext内置对象
在jsp页面中获取项目名
${pageContext.request.contextPath}
[]和. 有什么区别?
“[]”获得带有下标的(数组,List)。“ ”.获得一个对象的属性,如果属性名中包含了特殊字符必须使用“[]”不能使用“.”。
JSTL【JavaServer Pages Standard Tag Library,JSP标准标签库】
JSTL概述:
jsp标准的标签库语言 apache的 用来替代<%...%>脚本【替代JSP页面上的java代码】
使用步骤:
1.导入jar包 (jstl.jar和standard.jar)
2.在页面上导入标签库 <%@taglib prefix="" uri=""%>
例如:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL的分类:
core:核心类库 ★
fmt:格式化|国际化
xml:过时了
sql:过时了
fn函数库:很少使用
core:掌握
★c:if
★c:forEach
c:set 往域中设置值
c:choose c:when c:otherwise 分支
★c:if 判断
<c:if test="${el表达式}">满足的时候输出的内容</c:if>
例如:
<c:if test="${3>4 }">
3大于4
</c:if>
<c:if test="${3<=4 }">
3不大于4
</c:if>
//////////////
★c:forEach 循环
格式1:
<c:forEach begin="从那里开始" end="到那里结束" step="步长" var="给变量起个名字" varStatus="循环状态变量">
${i }--${vs.count }--${vs.current }<br>
</c:forEach>
varStatus:用来记录循环的状态
常用的属性:
count:记录次数
current:当前遍历的内容
例如:
<c:forEach begin="1" end="20" step="2" var="i" varStatus="vs">
${i }--${vs.count }--${vs.current }<br>
</c:forEach>
格式2:
<c:forEach items="${el获取域中的容器}" var="n">
${n }
</c:forEach>
例如:
//遍历list
<c:forEach items="${list }" var="n">
${n }
</c:forEach>
//遍历map
<c:forEach items="${map }" var="en">
${en.key }-- ${en.value }<br/>
</c:forEach>
常用的标签:
c:set 设置值
c:if 选择结构
c:forEach 循环结构
c:choose 相当于switch结构
* c:when 相当于case
* c:otherwise相当于default
JSTL的函数库(EL的函数库)
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
${ fn:length("HelloWorld") }
${ fn:toLowerCase("ABCDEFG") }
${ fn:toUpperCase("abcdefg") }
${ fn:contains("www.baidu.com","baidu") }
JavaBean导航
javabean概述:
java语言编写的一个可重用的组件,
狭义上来说就是我们编写的一个普通的java类 例如:User Person
javabean:
java语言编写的一个可重用的组件,
狭义上来说就是我们编写的一个普通的java类 例如:User Person
javabean规范:
1.必须是一个公共的具体的类 public class
2.提供私有的字段 private String id;//id称之为字段
3.提供公共访问字段的方法 get|set|is方法
public String getId(){..}
一旦有公共的方法之后,get|set|is之后的内容,将首字母小写,将这个东西称之为bean属性
id就是一个bean属性
4.提供一个无参的构造器
5.一般实现序列化接口 serializable
${域中javabean名称.bean属性}