第一:概念
EL表达式里面可以是变量、对象、集合
1.在jsp中的表达式是<%=%>.
2.servlet中的内置对象和jsp中的内置对象是同一个内置对象,因为在servlet中的session设置值之后在jsp中能够获取。
3.El表达式里面是变量的时候:将数据进行打印显示(其实EL表达式就是用来替代<%=%>的,EL表达式不需要导入jar包)
语法:${x};:注意,$符里面的x其实是个键,是web对象中保存值的键,由web的内置对象获取值,例如pageCotent,request,session,applicatioon
${x}其实是在调用内置对象的getAttribute()方法。
4.pageCotent,request,session,application四个内置对象 的取值范围不同,当这四个对象的键相同的情况下根据四个内置对象的共享范围来找(从小到大)。默认是从小到大查找
5.sessionScope是对前面的扩展,当同时出现这四个键的时候,我指定我要使用session。scope的作用是指定使用哪个内置对象。
6.当El表达式里面是个对象的时候, ${stu.sno}表示调用request.getAttribute()方法,其中stu.sno表示调用了对象的get方法,跟属性无关。(这里的sno是跟实体类中的getSno保持一致的,就是把get后面的第一个单词转化成小写然后取出get后面的单词)。
7.EL表达式里面是集合的时候:${stuList[0].sno}:获取学生集合中的第一个学生的学号。
8.EL表达式的运算:
支持算数运算,${num+100}。
支持比较运算,${num1>num2}。gt,lt,eq,ge(分别是>,<,=,>=)。判断num是否为空:${empty num}
9.在servlet中获取session对象:HttpSession session=request.getSession
获取application对象:ServletContext application=super.getServletContext;
获取pageContext对象:PageContext pageContext=
10.jstl(jsp的标准标签库,html里面有标签,jsp中也有标签):用于集合的变量 。
使用jstl的时候要加入c标签,taglib是标签库的意思。其中c是jstl的核心标签,是后面路径core的缩写,所有标签都以c开头
-----1.普通标签:
<c:set var="temp" value="123" scope="request"></c:set>:定义变量,名字是temp,值是123,保存范围是scope
<c:set var="sno" value="${stu}"></c:set>:取值
<c:set property="sno" target="${stu} " value="5555"></c:set>:给stu对象的sno属性赋值
<c:out value=${}></c:out>:打印输出
-----2.逻辑标签:
第一个判断:<c:if test="${1>2}" var="res">:其中test写if的条件相当于小括号,var是用来保存结果的变量
<h1>${res}</h1>
</c:if>
第二个循环:<c:forEach var="stu" items="stuList" begin="1" end="1" step="2" varStatus="index">:var表示集合中的元素,items表示集合,begin和end表示从哪开始循环和结束循环.step表示步长,也就是变化量。varStatus表示状态,他是个对象,index是varStatus对象的属性,表示当前的下标,从0开始。
${stu.sno}
</c:forEach>
第三个选择: <c:choose>
<c:when test="1 gt 2">
1
<c:when>
<c:when test="1 lt 2">
2
<c:when>
<otherwise>
0
<otherwise>
<c:choose>
第四个重定向:<c:redirect url="index.jsp"></c:redirect>注意跟jsp的区分
第五个重定向,并把这个值传过去<c:redirect url="index.jsp"><c:param name="ps" value="100"></c:param></c:redirect>
-----3.数据标签:
-----4.格式化标签:
<fmt :formatDate value="${d}"></fmt>格式化日期,d是一个Date类型的日期。
对日期格式化等。自学:fmt标签格式标签<fmt:></:fmt>
11.总结:
-----1.jstl标准标签库不单单只有c标签,还有数据标签,格式标签等,例如格式标签就是fmt,不是c了。
------2.EL表达式只是升级了jsp的表达式(<%=%>),使用了${};JSTL标准标签库才是使用了c标签并完成了循环遍历等操作。
第二:代码实现
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.entity.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%--
EL(表达式语言):将数据进行打印显示
语法:
${x} :x为web对象中保存值的键,由web内置对象中通过键获取值
--%>
${100}<br/>
${num }<br/>
${sessionScope.num }<br/>
${stu.sno }----${stu.sname }<br/>
${stuList[1].sno }----${stuList[1].sname }<br/>
-----------------------------------------------<br/>
<!-- el表达式的简单运算 -->
${num+sessionScope.num }<br/>
${num%sessionScope.num }<br/>
${num/sessionScope.num }<br/>
-----------------------------------------------<br/>
${num>requestScope.num }<br/>
${num gt requestScope.num }<br/>
${num lt requestScope.num }<br/>
${num eq requestScope.num }<br/>
${num ge requestScope.num }<br/>
${not empty num }<br/>
-----------------------------------------------<br/>
<!--
jstl:jsp的标准标签库
普通标签
逻辑标签
数据标签
格式标签
-->
jstl<br/>
<c:set var="temp" value="123" scope="request"></c:set>
${temp }
<c:set var="sno" value="${stu.sno}"></c:set>
${sno }
<c:set property="sno" target="${stu}" value="780000"></c:set>
${stu.sno }
<c:out value="${stu.sno}"></c:out><br/>
-----------------------------------------------<br/>
<c:if test="${1 lt 2}" var="res" >
<h1>1 lt 2:----${res }</h1>
</c:if>
<c:if test="${1 gt 2}" var="res" >
<h1>1 gt 2:----${res }</h1>
</c:if>
<!-- begin="1" end="1" step="2" -->
<c:forEach var="stu" items="${stuList}" varStatus="index">
${index.index}-----${stu.sno }-----${stu.sname }<br/>
</c:forEach>
<c:choose>
<c:when test="${stu.sno eq 78000}">
eq 78000
</c:when>
<c:when test="${stu.sno lt 78000}">
lt 78000
</c:when>
<c:otherwise>
gt 78000
</c:otherwise>
</c:choose>
</body>
</html>