EL表达式

1、EL表达式的默认查找规则-WEB域

<!DOCTYPE HTML>
<html>
	<head>
		<base href="<%=basePath%>">
		<meta charset="UTF-8">
		<title>H5模版:</title>
	</head>
	<body>
		<h2>EL表达式的默认查找规则-WEB域</h2>
		<%
		pageContext.setAttribute("book", "西游记");//不注释,西游记
		request.setAttribute("book", "红楼梦");//注释上面,输出西游记
		session.setAttribute("book", "三国演义");//注释上面,输出西游记
		application.setAttribute("book", "水浒传");//注释上面,输出三国演义//全注释,输出三国演义
		%>
		<h1>${book} </h1>
		<h1>${pageScope.book} </h1>
		<h1>${requestScope.book} </h1>
		<h1>${sessionScope.book} </h1>
		<h1>${applicationScope.book} </h1>

	</body>
</html>

首先要明确,范围排名:pageContext<request<session<application.

pageContext的应用范围是当前页面,request是请求转发,中间不允许出现重定向,session是一次会话,只要不关闭浏览器就可以,application是应用,可以理解,只要不关闭tomcat服务器就可以。

但是

<h1>${pageScope.book} </h1><!--对应于pageContext-->
<h1>${requestScope.book} </h1><!--对应于request-->
<h1>${sessionScope.book} </h1><!--对应于session-->
<h1>${applicationScope.book} </h1><!--对应于application-->

则可以对应输出应该的值。

2、下面讲,为什么要用EL表达式,而不用request.getAttribute("shxt")?

因为:

<!-- 代码太麻烦 -->
***<%=request.getAttribute("shxt")!=null?request.getAttribute("shxt"):"" %>***
<!-- 代码不麻烦 -->
===${requestScope.shxt}===

像第一句的话,如果并没有传过来"shxt"这个变量的话,<%=request.getAttribute("shxt")就会输出null,显然这不是我们想要的结果,所以,就要用校验,下面的运算符就是比较,如果为空,则输出来,否则输出""。

但是呢,${requestScope.shxt就不会,如果是没有的话,直接不会输出来。

并且,我们墙裂要求,以后jsp页面或者html页面尽可能少的出现<%     %>这样的代码。

3、EL表达式的几种常用写法。

<!-- 第一种 -->
${requestScope.shxt}

<!-- 第二种 -->
${pageScope["book"]} 

<!-- 第三种 -->
${requestScope['book']}

${sessionScope["book"]}
${applicationScope["book"]}

4、服务端超链接传值

<!--这是demo02.jsp-->
<!DOCTYPE HTML>
<html>
	<head>
		<base href="<%=basePath%>">
		<meta charset="UTF-8">
		<title>H5模版:</title>
	</head>
	<body>
		<h2><a href="demo03.jsp?id=100&hobby=music&hobby=basketball">服务端超链接</a></h2>
	</body>
</html>
<!-- 这是demo03.jsp -->
<!DOCTYPE HTML>
<html>
	<head>
		<base href="<%=basePath%>">
		<meta charset="UTF-8">
		<title>H5模版:</title>
	</head>
	<body>
		<h2><%=request.getParameter("id") %></h2>
		<h2><%=request.getParameterValues("hobby") %></h2>
		<hr>
		<h3>${param.id }</h3>
		<h3>${paramValues.hobby }</h3>
	</body>
</html>

获取单值:<%=request.getParameter("id") %>

获取多值:<%=request.getParameterValues("hobby") %>

或者

获取单值:${param.id }

获取多值:${paramValues.hobby }

5、EL表达式可以放置在我们程序的任何位置

<!DOCTYPE HTML>
<html>
	<head>
		<base href="<%=basePath%>">
		<meta charset="UTF-8">
		<title>H5模版:</title>
	</head>
	<body>
	   <%
	   pageContext.setAttribute("num", "100");
	   pageContext.setAttribute("book", "西游记");
	   %>
		<h3>&lt;EL表达式可以放置在我们程序的任何位置&gt;</h3>
		<h3>${num < 200 }</h3>
		<h3>${num lt 200 }</h3>
		
		<h3>${num > 200 }</h3>
		<h3>${num gt 200 }</h3>
		
		<h3>${num <= 200 }</h3>
		<h3>${num le 200 }</h3>
		
		<h3>${num >= 200 }</h3>
		<h3>${num ge 200 }</h3>
		
		<h3>${num > 90 && num < 200 }</h3>
		<h3>${num > 90 and num < 200 }</h3>
		
		<h3>${num > 90 || num < 200 }</h3>
		<h3>${num > 90 or num < 200 }</h3>
		
		<h3>${num == 100 }</h3>
		<h3>${num eq 100 }</h3>
		
		<h3>${num != 100 }</h3>
		<h3>${! (num eq 100)}</h3>
		<h3>${not (num eq 100)}</h3>
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值