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">足球 21 <input type="checkbox" name="hobby" value="tennis">网球 22 <input type="checkbox" name="hobby" value="basketball">篮球 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>