1.EL表达式: 是jsp写起来更简单.
1.语法: ${EL表达式}
2.功能: 获取数据:(jsp的四个域), 执行运算,操作web开发常用的对象,调用java中的方法(不一般用)
3.${pageScope.name}: 前面写域名.属性名 如果没找到返回空字符串
简写方式${name} 类似于findAttribute("name");
4.获取数组数据:${arrs[索引]} , 获取List数据:${list[索引]}
5.获取Map集合的数据: ${map.aaa} 集合.属性名
6.点和方括号的区别: 方括号用于有下标的数据, 点用于有属性的数据(map或javaBean)
如果属性名中包含有特殊字符,必须加["属性名"] 属性名bbb.aaa
7.获取对象的属性: ${user.name} 调用的对象的get方法;
8.数组中存放对象, ${userlist[0].username}第一个对象的属性名 ${usermap.user1.username}
2.EL执行运算:
1.算数运算:${属性名1+属性名2} 会类型转换,如果没有值,为0 不能执行位运算
2.逻辑运算 ${n1 < n2} 或 ${n1 lt n2} lt小于 gt大于 le小于等于 ge大于等于 eq等于
3.关系运算:${n1 < n2 && n3 < n4} 或 ${n1 < n2 and n3 < n4} 或or
${!(n1 < n2)} 非 not(n1<n2)
4.执行三元运算符
5.判断一个对象是否为空: ${user == null} 或 ${empty user} 不为空 not empty
3.操作web开发常用的对象 11个对象
1.pageScope,requestScope,sesssionscope,applicationscope
2.param和paramValues--接收参数(${param.cid}) header和heraderValues -- 获取请求头信息
3.initparam --获取全局初始化参数 cookie -- web开发中的cookie ${cookie.username.value}
pagacontext -- web开发中的pagacontext
4.如何从地址栏得到?id=1; ${param.id} 得到数组: ${paramValues.hobby[索引]}
5.获取请求头: ${header["user-agent"]} 因为有特殊字符
6.获取全局初始化参数:${initparam.属性名}
**7.获取cookie: ${cookie.history.value}
8.获取pagacontext的对象 ${pageContext.request.contextPath} 工程名
JSTL
1.JSTL: jsp的标准标签库 作用: JSTL和EL结合替换页面中<%%>
1.版本 JSTL1.0 :不支持EL表达式 JSTL1.1和JSTL1.2 :支持EL表达式
2.JSTL的标签库: 包含了五类标签.
core(核心标签);fmt(国际化标签); xml(xml标签); sql(SQL标签) fn(JSTL提供EL函数库)
2.使用JSTL:
1.引入两个jar包,在页面中引入标签库: <%@ taglib uri="jsp/jstl/core" prefix="c" %>
2. <c:set var="变量名" value="值" scope="page域"> request域
3.<c:out value="<h1>${i}</h1>" default="默认值" excapeXml="false"> 如果i没有值,会执行默认值,
里面的value是什么值都不能有<h1>
会执行html</c:out>
4..<c:if test="判断条件" var="变量名" scope="page域"> 把下面执行结果赋给变量,存入page域中
5.遍历数组 <c:forEach var="i" items="数组${arrs}"> i为获取的值 , list集合也一样
6.遍历map <c:forEach var="entry" items="map集合${map}"> entry为键值对
取值:${entry.key} ${entry.value}
7.遍历1-10,每次+2,到三就变红 <c:forEach var="i" begin="1" end="10" step="2" varStatus="status"> status.count %3 == 0;
varStatus记录变化的状态,随便起名字,index是带下标的 ,必须有数组或者集合的时候才能用
3.JSTL的提供的EL的函数库uri="http://java.sun.com/jsp/jstl/functions" prefix="fn";
1.${fn: 字符串中的方法(例如:contains,length,indexof,split)("a-b-c","-")}
4.将商品信息显示到JSP页面中;
1.在servlet中,调用业务层,返回list集合,存到request域中,转发;
2.在jsp页面中,表格中,forEach
mvc设计模式
MVC设计模式: jsp 用于显示数据, JavaBean用于封装和处理数据,servlet控制;
第一种设计模式: jsp+javaBean;
封装数据两个jar包 BeanUtils.populate() ; 用到了反射