javascript
el-凯发k8官方网
1.导言
- 表达式语言 el(expression language)是 jsp 2.0 的重要特性。 el 设计成可以轻松地编写免脚本的 jsp 页面,也就是说,页面不使用任何 jsp 声明、表达式或者 scriptlets 。
- jstl(javaserver pages standard tag library,jsp 标准标签库)主要提供给 java web 开发人员一个标准通用的标签函数库,标签库同时支持 el 用于获取数据,web开发人员能够用此标签库取代直接在页面中嵌入 java 程序的做法,以提高程序的可读性和易维护性。
2. el 简介
el表达式以'${'开头,并以'}'结束。
语法格式为:${expression} 。
el表达式中的常量包括布尔常量、整型常量、字符串常量和null常量。
(1)el中的标识符
el 的标识符可以由任意的大小写字母、数字和下划线组成。但 el 的标识符:① 不能以数字开头;② 不能是el 中的保留字;③ 不能是隐式对象;④ 不能包含单引号、双引号、减号和正斜杠等特殊字符。
(2)变量与保留关键字
el 表达式中的变量须从 jsp 四大作用域范围中依序进行查找。( page、request、session 和 application )
以下是 el 中的保留关键字,不能用作标识符。
and、or、not、eq、ne、lt、gt、le、ge、true、false、null、instanceof、empty、div、mod 。
(3) [ ] 和 . 运算符
通过 el 提供的“[ ]”和“.”运算符可以访问数据。
①“.”运算符:el 表达式可使用点操作符来访问对象的属性。例如 object.propertyname。②“[]”运算符:与点操作符类似,也用于访问对象的属性,属性名须用双引号括起来。③“[]”运算符可以访问map对象的key关键字的值,例如{object.propertyname} 。 ②“[ ]”运算符:与点操作符类似,也用于访问对象的属性,属性名须用双引号括起来。 ③“[ ]”运算符可以访问 map 对象的 key 关键字的值,例如object.propertyname。②“[]”运算符:与点操作符类似,也用于访问对象的属性,属性名须用双引号括起来。③“[]”运算符可以访问map对象的key关键字的值,例如{map[ “key”]}。
2.1 el 的运算符和优先级
2.2 el 隐式对象
el为了能够获得web 应用程序中的相关数据,el 提供了11个隐式对象,类似于jsp的内置对象。
在el的隐式对象中,除 pagecontext 是javabean对象,对应于javax.servlet.jsp.pagecontext类型外,其他的隐式对象都对应于java.util.map类型。
这些隐式对象可分为页面上下文对象、访问作用域范围的隐式对象和访问环境信息的隐式对象 3 种。如表 5-5 所示。
2.2.1 pagecontext对象
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>获取请求uri:${pagecontext.request.requesturi }
获取请求url:${pagecontext.request.requesturl }
获取响应的内容类型:${pagecontext.response.contenttype }
获取服务器信息:${pagecontext.servletcontext.serverinfo }
获取servlet注册名:${pagecontext.servletconfig.servletname }
获取session创建时间:${pagecontext.session.creationtime }
获取session会话最长空闲时间:${pagecontext.session.maxinactiveinterval }
获取session会话的id:${pagecontext.session.id }
2.2.2 作用域范围隐式对象(pagescope—requestscope—sessionscope—applicationscope)
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>pagescope隐式对象中key为"cityname"的值:${pagescope.cityname }
requestscope隐式对象中key为"university"的值:${requestscope.university }
session隐式对象中key为"bookname"的值:${sessionscope.bookname }
applicationscope隐式对象中key为"cityname"的值:${applicationscope.cityname }
表达式\${cityname}的值:${pagescope.cityname}
2.2.3 param和paramvalues对象
访问param.jsp,提交到param_result.jsp
param.jsp:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>个人信息
param_result.jsp:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>姓名:${param.user}
爱好:${paramvalues.hobby[0]} ${paramvalues.hobby[1]} ${paramvalues.hobby[2]}
2.2.4 cookie对象
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>cookie隐式对象的使用
获取名为jsessionid的cookie对象:${cookie.jsessionid }
获取名为jsessionid的cookie对象的名称:${cookie.jsessionid.name }
获取名为jsessionid的cookie对象的值:${cookie.jsessionid.value }
<%cookie cookie2 = new cookie("username", "admin");response.addcookie(cookie2);%>
获取名为username的cookie对象:${cookie.username }
获取名为username的cookie对象的名称:${cookie.username.name }
获取名为username的cookie对象的值:${cookie.username.value }
<%cookie[] cookies = request.getcookies();if (cookies != null)for (cookie c : cookies) {out.println(c);out.println(c.getname());out.println(c.getvalue());out.println("
");}%>
设置cookie请看:https://www.bithachi.cn/posts/f768f9d3.html
2.2.5 header对象
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>header隐式对象的使用
获取请求头host的值:${header.host }
获取请求头的connection属性(是否需要持久连接):${header.connection }
2.2…6 initparam对象
web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><context-param><param-name>driverclassnameparam-name><param-value>com.mysql.jdbc.driverparam-value>context-param> web-app> <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>initparam隐式对象的使用
driverclassname的值:${initparam.driverclassname }
2.3. 定义和使用 el 函数
el 自定义函数就是提供一种语法允许在 el 中调用某个java类的静态方法。
el自定义函数的开发与应用包括以下3个步骤:
(1)编写一个java类,并在该类中编写公用的静态方法,用于实现自定义el函数的具体功能。
(2)编写标签库描述文件(扩展名为*.tld),对函数进行声明,保存到web应用的web-inf文件夹下。
(3)在jsp页面中引用标签库,并调用定义的el函数,实现相应的功能。
白日依山尽,黄河入海流
${mlab:cfilter("白日依山尽,黄河入海流
") }3. jstl 简介
jsp 标准标签库(jstl)是一个 jsp 标签集合,它封装了 jsp 应用的通用核心功能。
jstl 支持通用的、结构化的任务,比如迭代,条件判断,xml 文档操作,国际化标签,sql 标签。
除了这些,它还提供了一个框架来使用集成jstl的自定义标签。
根据jstl标签所提供的功能,可以将其分为5个类别。
-
核心标签
-
格式化标签
-
sql标签
-
xml标签
-
jstl函数
3.1 核心标签库
jstl 核心标签库包含 web 应用中最常使用的标签,是 jstl 中比较重要的标签库。核心标签库的标签按功能可分为4类:表达式标签、条件标签、迭代标签、url相关标签。
如表 5-6 所示。引用核心标签库的语法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
更多用法:https://www.runoob.com/jsp/jsp-jstl.html
3.2 输出标签、变量设置标签、变量移除标签
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3.3 捕获异常标签
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3.4 、 、 、
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3.5 迭代标签
items | 要被循环的信息 | 否 | 无 |
begin | 开始的元素(0=第一个元素,1=第二个元素) | 否 | 0 |
end | 最后一个元素(0=第一个元素,1=第二个元素) | 否 | last element |
step | 每一次迭代的步长 | 否 | 1 |
var | 代表当前条目的变量名称 | 否 | 无 |
varstatus | 代表循环状态的变量名称 | 否 | 无 |
图书序号:${bookvst.index 1},图书名称:${book}
3.6
<%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3.7 、 、
<%-- url_test.jsp --%><%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
原来你是${param.user}
总结
- 上一篇: 工厂与抽象工厂
- 下一篇: spring入门图解(体系结构-ioc-