EL表达式与JSTL标签库(一)

1、JSTL概述

JSTL标签库由标签库和EL表达式两个部分组成。JSTL标准标签库(Java Server Page Standard Tag Library),用来解决创建的页面的操作问题,包括输入输出、条件测试、遍历集合。

2、EL表达式语法

EL表达式的主要作用:

  • 获取数据。EL表达式主要用于替换JSP页面中的脚本表达式,从Web作用域中获取Java对象,获取数据,包括访问Javabean的属性、List集合、Map集合、数组等。
  • 执行运算:利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面完成一些简单的逻辑操作。
  • 获取Web开发常用对象。利用EL表达式的隐式对象,可以轻松获得Web常用对象的引用,从而获取这些对象中的数据。

EL表达式的格式:

  ${expression },使用${文本时需要变为${

[]和.运算符

  EL表达式可以返回任意类型的值。EL取值结果为一个带有属性的对象时,使用[]或.来访问其属性,实质是通过getter方法来访问其属性。访问形式如下:

  • ${object["propertyName"]}
  • ${object.propertyName}

  propertyName不是有效的java变量名时,只能使用[]方式访问。如${header["accept-language"]}。

  如果访问对象的属性也是一个对象,并且也带有属性,此时既可以使用[],也可以使用.运算符来访问第二个对象的属性。${pageContext.request.contextPath }

3、EL表达式的隐式对象

  EL表达式中,存在11个隐式对象。

隐式对象 描述 例子
pageContext JSP上下文对象。它可访问JSP隐式对象。 ${pageContext.request.contextPath }
param 一个包含所有请求参数的Map。用于获取请求参数。 ${param.loginame }
paramValues 包含所有请求参数的Map。 ${paramValues.name }
header 请求标题。 ${header.name }
headerValues 包含请求标题,以标题名作为key的Map。 ${headerValues.name }
cookie 包含请求对象中所有cookie对象。 ${cookie.name.value }
initParam 包含环境初始化参数。 ${initParam.name }
pageScope 页面域 ${pageScope.name }
requestScope 请求域 ${requestScope.name }
sessionScope 会话域 ${sessionScope.name }
applicationScope 应以程序上下文域 ${applicationScope.name }

4个作用域的范围从小到大:pageContext、requestScope、sessionScope、applicationScope。省略scope对象时,默认查找范围由小到大。

4、EL应用举例

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>注册页面</title>
 8 </head>
 9 <body>
10     <h2>注册页面</h2>
11     <form action="register.jsp" method="post">
12         <table>
13             <tr>
14                 <td>登录名:</td>
15                 <td><input type="text" name="loginame" /></td>
16             </tr>
17             <tr>
18                 <td>爱好:</td>
19                 <td>
20                     <input type="checkbox" name="hobby" value="soccer">足球&nbsp;
21                     <input type="checkbox" name="hobby" value="tennis">网球&nbsp;
22                     <input type="checkbox" name="hobby" value="basketball">篮球&nbsp;
23                 </td>
24             </tr>
25             <tr>
26                 <td><input type="submit" value="提交"></td>
27             </tr>
28         </table>
29     </form>
30 </body>
31 </html>
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html>
 5 <head>
 6 <meta charset="UTF-8">
 7 <title>获取隐式对象测试</title>
 8 </head>
 9 <body>
10     <h2>EL取值测试</h2>
11     param获取单个参数:${param.loginame }<br>
12     paramValues获取多个参数:${paramValues.hobby[0] } - ${paramValues.hobby[1] }
13         -${paramValues.hobby[2] }<br>
14     header获取标题:${header.connection }<br>
15     header获取标题:${header["accept-language"] }<br>
16     headerValues获取标题:${headerValues["accept-language"] }<br>
17     cookie获取JSESSIONID:${cookie.JSESSIONID }<br>
18     cookie获取JSESSIONID名称:${cookie.JSESSIONID.name }<br>
19     cookie获取JSESSIONID值:${cookie.JSESSIONID.value }<br>
20     initParam获取初始化参数:${initParam.username }<br>
21 </body>
22 </html>

web.xml配置全局初始化参数

1 <context-param>
2       <param-name>username</param-name>
3       <param-value>AlphaJunS</param-value>
4   </context-param>

原文地址:https://www.cnblogs.com/alphajuns/p/11055345.html