el&jstl

1.EL表达式:expression language表达式语言,可以直接在jsp页面上用.
作用:可以直接从四大范围(page->request->session->application)内取出值.
1.1:el表达式的语法:${Key}
1.2:如果el表达取值时不带范围,依次从page->request->session->application寻找Key所对应的value,如果从page范围内找到值,就不会再从后面的范围寻找.
1.3:如果el表达按指定范围内取值时,如果这个范围内找到这个key所对应的值就显示,否则就不显示.

	eg:<!-- 在指定范围内存值 -->
<h2>${pageScope.sname }</h2>
<h2>${requestScope.sname }</h2>
<h2>${sessionScope.sname }</h2>
<h2>${applicationScope.sname }</h2>

1.4:如果${Key}的Key不存在或者通过key得到null或"“的值就不显示不报错不占页面位置,不会报null.
1.5:在el表达式中可以直接用java中运算符.
1.6:判断el表达式中值是否是null或”"用: e m p t y k e y 或 {empty key}或 emptykey{!empty key}
1.7:el表达式有自动类型转换作用

eg:<%
	//将数据存在page范围内
	pageContext.setAttribute("sname", "吴鹏程");
    //同一个范围内Key名相同,value覆盖
    pageContext.setAttribute("sname", "唐志亮");
	//将数据存在request范围内
	request.setAttribute("sname", 18);
	//将数据存在session范围内
	session.setAttribute("sname", "man");
	//将数据存在application范围内
	application.setAttribute("sname", "爱好女");

	//将对象存在request范围内
	Student student1=new Student("悌子君", "123456", "man", "aa@qq.com", "rap", "西安");
	request.setAttribute("stu1", student1);
	
	//将list集合存在request范围内
	//创建集合
	List<Student> stuList=new ArrayList();
	//向集合中添加元素
	stuList.add(new Student("aa", "123456", "man", "aa@qq.com", "rap", "西安"));
	stuList.add(new Student("bb", "123456", "man", "aa@qq.com", "rap", "西安"));
	stuList.add(new Student("cc", "123456", "man", "aa@qq.com", "rap", "西安"));
	request.setAttribute("stuList1", stuList);
	
	/*
		在java的泛型集合中这三种声明都可以
		Map<String,String> map1=new HashMap();
		Map<String,String> map1=new HashMap<>();

	 //这种创建集合的方式,注意有的版本el表达式识别不了
			Map<String,String> map1=new HashMap<String,string>();
		*/
		
	//将map集合存在request范围内
		//创建集合
		Map<String,String> map1=new HashMap();
		//向集合中添加元素
		map1.put("k1", "杨森林");
		map1.put("k2", "段怡豪");
		request.setAttribute("map2", map1);
		
	//将map集合的key存数字类型存在request范围内
		Map<Long,String> map4=new HashMap();
		//向集合中添加元素
		map4.put(2l, "张俊飞");
		request.setAttribute("map3", map4);
		
%>
	
	<!-- 用el表达式取出page范围内的值 -->
	<h1>${sname}</h1>
	<!-- 用el表达式取出request范围内的值 -->
	<h1>${sage}</h1>
	<!-- 用el表达式取出session范围内的值 -->
	<h1>${ssex}</h1>
	<!-- 用el表达式取出application范围内的值 -->
	<h1>${shobby}</h1>
	
	<!-- 在指定范围内存值 -->
	<h2>${pageScope.sname }</h2>
	<h2>${requestScope.sname }</h2>
	<h2>${sessionScope.sname }</h2>
	<h2>${applicationScope.sname }</h2>
	
	<!--用el取出对象的属性值 -->
	<h3>姓名:${stu1.name },性别:${stu1.sex }</h3>
	<h3>${stu1.toString() }</h3>
	<!-- el取出对象输出时,会自动调用对象toString() -->
	<h3>${stu1 }</h3>
	
	<!-- 用el表达式取出list集合中元素 -->
	<h1>${stuList1[0]}</h1>
	<!-- 用el表达式取出list集合中元素的属性 -->
	<h1>${stuList1[0].name}</h1>

	
<!-- 用el表达取出map集合中元素 -->
<h1>${map2["k1"] }</h1>
<h1>${map2.k1 }</h1>
	
<!-- el中直接用运算符 -->
<h1>${1+6-1 }</h1>
<h2>${1<2&&3<4 }</h2>
	
<!-- el中判断key为不为空 -->
<h1>不为空的判断:${!empty kk }</h1>
<h1>为空的判断${empty kk }</h1>
<!-- el表达式中+只有算术运算作用 -->
${"1"+1 } <!--输出结果为2-->
	
<!-- el表达式只支持map集合的key用Long或String不支持Integer -->
<h1>${map3[2] }</h1>

2.JSTL:全称JavaServerPages Standard TagLibrary,JSP标准标签库.
作用:简化jsp页面.
2.1:jstl使用步骤:
2.1.1:导包:jstl.jar, standard.jar
2.1.2:在jsp页面导入标签库:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
2.1.3:jstl的使用.

2.2:jstl的通用标签(了解):

eg:<!-- 声明变量并赋值的标签 -->
	<c:set var="sname" value="张三"  ></c:set>
	<!-- 输出标签 -->
	<c:out value="${sname }"></c:out>
	<h1>用el取出的值:${sname }</h1>
	<!-- 删除变量的值的标签 -->
	<c:remove var="sname"></c:remove>
	<h2>用删除标签后的值为:${sname }</h2>

2.3:jstl选择标签:
2.3.1:if选择标签:<c:if test="条件">代码</c:if>

eg:
<c:if test="${1>2 }">
		<h1>1小于2</h1>
	</c:if>

2.3.2:choose选择标签:choose相当于java中多重if选择结构

<c:choose>
	<c:when test="条件1">代码块1</c:when>
	<c:when test="条件2">代码块2</c:when>
	<c:when test="条件3">代码块3</c:when>
	<c:otherwise>上面所有条件不成立时,就执行的代码块</c:otherwise>
</c:choose>
eg:<!-- choose相当于java中多重if选择结构 -->
	<c:set var="score" value="59"></c:set>
	<h1>
	<c:choose>
		<c:when test="${score>=90 }">优秀</c:when>
		<c:when test="${score>=80 }">良好</c:when>
		<c:when test="${score>=60 }">及格</c:when>
		<c:otherwise>再接再厉</c:otherwise>
	</c:choose>
	</h1>

2.4:jstl循环标签:
2.4.1:foreach当前for循环来使用:

<c:forEach var="当前遍历变量名" begin="起始值" end="终止值" step="叠加值">
		代码        		
</c:forEach>
eg:<!-- for循环使用:从1输出10 -->
	<c:forEach var="num" begin="1" end="10" step="1">
		${num }
	</c:forEach>

2.4.2: foreach循环使用

<c:forEach var="指代当前遍历元素" items="集合/数组" varStatus="stutus">
	索引:${stutus.index }-当前遍历的元素的值:${指代当前遍历元素 }
</c:forEach>
eg:<%
		List<String> names=new ArrayList();
		names.add("张三");
		names.add("李四");
		names.add("王二麻子");
		request.setAttribute("stuNames", names);
	%>
	
	<h1>
	<c:forEach var="stu" items="${stuNames }" varStatus="stutus">
		${stutus.index }-${stu }
	</c:forEach>
	</h1>

3.(扩展)函数标签库:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/functions” prefix=“fn” %>

eg:<!-- 函数标签库的使用:相当java中String类常用方法 -->
<h2>${fn:contains("我是千锋人","千锋") }</h2>
<h2>${fn:length("abdfefe") }</h2>
<h2>${"abc" eq "abc"}</h2><!--eq判断是否相等-->
<h2>${"abc" == "abc"}</h2>

格式化标签库:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>

 eg:<!-- 格式化标签库的使用 -->
	<%
		Date today=new Date();
		request.setAttribute("time1", today);
	%>
	<!-- 格式化日期 -->
	<h1><fmt:formatDate value="${time1 }" pattern="yyyy-MM-dd HH:mm:ss"/></h1>
	<!-- 保留两位小数,四舍五入 -->
	<h2><fmt:formatNumber value="3.1465926" pattern="0.00"></fmt:formatNumber></h2>
	<!-- 将小数转换为百分比 -->
	<h2><fmt:formatNumber value="0.4267" pattern="0.00%"></fmt:formatNumber></h2>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值