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><EL表达式可以放置在我们程序的任何位置></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>