JSP学习笔记——EL和JSTL表达式



EL和JSTL

1.EL表达式概述

EL表达式就是表达式语言,它是Servlet规范中的一部分。它是从JSP2.0规范以后加入的内容。主要作用就是在JSP页面中获取数据。从而达到JSP脱离Java代码块和Java表达式

语法:${表达式}

通过刚才编写的案例可以得知,EL表达式其实就是从作用域中获取数据。以后在实际开发中,JSP只要充当视图,这时候EL表达式就会被大量使用。

2.EL表达式的使用

<body>
1234
	<!-- 基本数据类型 -->
	${a}
	<!-- 引用数据类型 -->
	${emp} <!-- 对象的地址 -->
	
	${emp.eid }
	${emp.ename }
	${emp.sex }
	${emp.age }
	${emp.dept.dname }
	<br/>
	<!-- 集合类型 -->
	${list[0].eid }
	${list[0].ename }
	${list[0].sex }
	${list[0].age }
	${list[0].dept.dname }
	<hr/>
	${list[1].eid }
	${list[1].ename }
	${list[1].sex }
	${list[1].age }
	${list[1].dept.dname }
	<hr/>
	${list[2].eid }
	${list[2].ename }
	${list[2].sex }
	${list[2].age }
	${list[2].dept.dname }
	<br/>
	<p>下面是map的数据</p>
	${map.a.ename }
	${map["a"].sex }
</body>
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String s= "这是后台的数据";
		//基本数据放入在作用域中
		req.setAttribute("a", s);
		//对象数据放入到作用域中
		Dept dept = new Dept();
		dept.setDid(4001);
		dept.setDname("研发部");
		Emp emp = new Emp(1001, "张三", "男", 19,dept);
		req.setAttribute("emp", emp);
		//List类型
		List<Emp> list = new ArrayList<Emp>();
		Emp emp2 = new Emp(1002, "张三2", "男2", 192,dept);
		Emp emp3 = new Emp(1003, "张三3", "男3", 193,dept);
		list.add(emp);
		list.add(emp2);
		list.add(emp3);
		req.setAttribute("list", list);
		//map类型
		HashMap<String, Emp> map = new HashMap<String,Emp>();
		map.put("a", emp);
		map.put("b", emp2);
		map.put("c", emp3);
		req.setAttribute("map", map);
		//跳转到展示页面
		req.getRequestDispatcher("WEB-INF/jsp/show.jsp").forward(req, resp);
	}

3.EL表达式的运算符

3.1 算数运算符

注意:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${‘a’+‘b’}则会出现异常。

${9+8 }
${9-8 }
${9*8 }
${9/8 }
3.2 关系运算符
==(eq)
!=(ne)
<(lt)
>(gt)
<=(le)
>=(ge)

${9<=8 }
${9>=8 }
${9>8 }
${9<8 }
${9==8 }
${9!=8 }
<hr/>
${9 le 8 }
${9 ge 8 }
${9 gt 8 }
${9 lt 8 }
${9 eq 8 }
${9 ne 8 }
3.3 逻辑运算符有
&&(and)
||(or)
!(not)

${9==8 || 9>8 }
${9==9 && 8==8 }
${!(8==8) }
<hr/>
${9==8 or 9>8 }
${9==9 and 8==8 }
${not(8==8) }
3.4 三目运算符
<input type="radio" name="sex" value="男" ${emp.sex == "男"?"checked":"" }>男
<input type="radio" name="sex" value="女" ${emp.sex == "女"?"checked":"" }>女
3.5 特殊运算符
${empty emp.ename }
不为空则为false
为空则为true

4.JSTL

4.1 JSTL简介

它就是JSP中的标准的标签库。它是有Apache实现的。

它由 Core,Fmt,Functions,SQL,XML这五部分组成。最常用就是Core。

Core:核心标签库。一般开发中使用这个主要用于逻辑处理

Fmt:国际化相关的一部分。

Functions:EL函数库。里面提供了EL表达式可以使用的方法

SQL:用于操作数据库

XML:操作XML

注意:如果应用中需要使用JSTL表达式,那么需要引入Jar包。

4.2 JSTL的使用
<c:if test="${emp.age>=68 }">
	老女人
</c:if>
<c:if test="${emp.age<68 }">
	小姑娘
</c:if>
//c:if 进行判断。 根据test属性的值决定是否执行判断的代码块
<c:choose>
    <c:when test="${emp.age<=14 }">
        儿童
    </c:when>
    <c:when test="${emp.age>14 and emp.age<=18 }">
        少女
    </c:when>
    <c:when test="${emp.age>18}">
        成年
    </c:when>
</c:choose>
// c:forEach 它是用来遍历集合的
//基本语法:
<c:forEach items="" var="emp" begin="" end="" step="" varStatus="">
</c:forEach>
// items:需要遍历的集合。它可以用EL表达式取出来的数据
// var:把当前遍历的元素放入到page作用域中。var属性的值当做作用域中的key,当前遍历的元素当做value
// begin:开始遍历的索引
// end: 结束遍历的索引
// step: 步长
// varStatus:它就是一个计数器的对象。只做两件事。记录索引和记录个数
<table border="1">
    <tr>
        <td>编号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>年龄</td>
        <td>部门</td>
    </tr>
    <c:forEach items="${list }" var="emp">
        <tr>
            <td>${emp.eid }</td>
            <td>${emp.ename }</td>
            <td>${emp.sex }</td>
            <td>${emp.age }</td>
            <td>${emp.dept.dname }</td>
        </tr>
    </c:forEach>
</table>
<c:forEach begin="0" end="8" var="pagenum" step="2" varStatus="vs">
    页数:<a href="#">${pagenum }</a>
    索引:${vs.index }
    个数:${vs.count }
</c:forEach>


//c:set 用于保存数据
//主要属性:var:作用域中key ,value:作用域中的value,scope:存储在那个作用域中 默认page
<c:set var="username" value="张三"></c:set>
<c:out value="${username }"></c:out>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值