EL表达式的作用:
EL作用:
jsp的核心语法:jsp表达式和jsp脚本。
用EL布偶奥达是替换掉掉jsp表达式。
EL表达式作用:向浏览器输出域对象中的变量值或表达式计算的结果!!!
语法: ${变量或表达式}
EL表达式语法:
1)输出基本数据类型变量
1)从四个域获取
${name}
2)指定域获取
${pageScope.name}
域范围:paageScope/requestScope/sessionScope/applicationScope
2)输出对象属性值
Student
3)输出集合对象
List 和 Map
4)EL表达式计算
JSP标签
jsp标签的作用:替换jsp脚本
1)判断流程(if for循环)
2)跳转页面(转发,重定向)
jsp标签分类
1)内置标签(动作标签):不需要在jsp页面导入标签
2)jstl标签:需要在jsp页面导入标签
3)自定义标签:开发者自行定义,需要在jsp页面导入
1)动作标签
转发标签: <jsp:forward>
参数标签:<jsp:param>
包含标签:<jsp:include>
原理:包含于被包含的页面先各自翻译成java源文件,然后再运行时合并在一起
(先翻译在合并),动态合并
1)语法不同
静态包含语法:<%@include file="被包含的页面"%>
动态包含语法:<jsp:include page="被包含的页面">
2)参数传递不同
静态包含不能向被包含页面传递参数
动态包含可以向被包含的页面传递参数
3)原理不同
静态包含:先合并再翻译
动态包含:先翻译再合并
JSTL标签
JSTL(全名:java standard tag libarary - java标准标签库 )
核心标签库(c标签库)重点
国际化标签(fmt标签库)
EL函数库(fn函数库)
xml标签库(x标签库)不用
sql标签库(sql标签库)不用
使用jstl标签步骤
1)导入jstl支持的jar包(标签背后隐藏的java代码)
注意:使用javaee5.0的项目自动导入jstl支持的jar包
2)使用taglib指令导入标签库
<%@taglib uri="tld文件的uri名称" prefix="简写" %>
<%--导入标签库 (通常情况下导入标签库的写法)--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
3)在jsp中使用标签
保存数据:
<c:set></c:set>
获取数据:
<c:out value=""></c:out>
单条件判断:
<c:if test=""></c:if>
多条件判断
<c:choose></c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
循环数据:
<c:forEach></c:forEach>
<c:forTokens items="" delims=""></c:forTokens>
重定向:
<c:redirect></c:redirect>
<%--set标签:保存数据(保存到域中)默认保存到page域--%>
<c:set var="name" value="rose" scope="request"></c:set>
<%
String msg=null;
pageContext.setAttribute("msg",msg);
%>
${requestScope.name }
<br>
<%--out标签:获取数据(从域中)
default:当value值为null时,使用默认值
escapeXml:是否对value值进行转义,false,不转义,true,转义(默认)
--%>
<c:out value="${msg}" default="<h3>标题3</h3>" escapeXml="false"></c:out>
<hr>
<%--if标签:单条件判断--%>
<c:if test="${!empty msg}">
条件成立
</c:if>
<%--choose标签+when标签+otherwrise标签:多条件判断--%>
<c:set var="score" value="86"></c:set>
<c:choose>
<c:when test="${ score>=90 && score<=100}">
优秀
</c:when>
<c:when test="${ score>80 && score<90}">
良好
</c:when>
<c:when test="${ score>=70 && score<80}">
一般
</c:when>
<c:when test="${ score>=60 && score<70}">
及格
</c:when>
<c:otherwise>
不及格
</c:otherwise>
</c:choose>
<%--forEach标签:循环--%>
<%
//List
List<Student> list=new ArrayList<Student>();
list.add(new Student("rose",18));
list.add(new Student("jack",28));
list.add(new Student("lucy",38));
//放到域中
pageContext.setAttribute("list",list);
//Map
Map<String,Student> map=new HashMap<String,Student>();
map.put("100",new Student("mark",20));
map.put("101",new Student("maxwell",30));
map.put("102",new Student("narci",40));
//放到域中
pageContext.setAttribute("map",map);
%>
<%--begin="" 从哪个元素开始遍历,默认从0开始
end="" 到那个元素截止,默认到最后一个元素
step="" 步长(每次加几),默认到1
items="" 需要遍历的数据(集合)
var="" 每个元素的名称
varStatus="" 当前正在遍历的元素的对象(状态对象(count属性:当前位置,从开始)
--%>
<c:forEach begin="0" end="2" step="1" items="${list}"
var="Student" varStatus="vatStu">
序号:${varStu.count} -姓名:${Student.name} -年龄:${Student.age}<br>
</c:forEach>
<c:forEach items="${map}" var="entry">
${entry.key} -姓名:${entry.value.name} -年龄:${entry.value.age}<br>
</c:forEach>
<%--frToken标签:循环特殊字符串--%>
<%
String str="java-php-net-平面";
pageContext.setAttribute("str",str);
%>
<c:forTokens items="${str}" delims="-" var="s">
${s }<br>
</c:forTokens>
<%--redrict:重定向--%>
<c:redirect url="http://www.baidu.com"></c:redirect>