欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 前端技术 > javascript >内容正文

javascript

el-ag凯发k8国际

发布时间:2024/10/14 javascript 28 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 el_jstl 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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[]访[]访mapkey{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"%> pagecontext隐式对象的使用 pagecontext隐式对象的使用

获取请求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"%> 作用域范围隐式对象的使用 <% pagecontext.setattribute("cityname", "soochow"); %> <% request.setattribute("university", "华东师范大学"); %> <% session.setattribute("bookname", "《android应用开发实践教程》"); %> <% application.setattribute("cityname", "new york"); %>

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和paramvalues隐式对象的使用

个人信息

姓名:

爱好:游泳 乒乓球 音乐 围棋

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隐式对象的使用

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隐式对象的使用

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隐式对象的使用

initparam隐式对象的使用

driverclassname的值:${initparam.driverclassname }

2.3. 定义和使用 el 函数

el 自定义函数就是提供一种语法允许在 el 中调用某个java类的静态方法。
el自定义函数的开发与应用包括以下3个步骤:
(1)编写一个java类,并在该类中编写公用的静态方法,用于实现自定义el函数的具体功能。
(2)编写标签库描述文件(扩展名为*.tld),对函数进行声明,保存到web应用的web-inf文件夹下。
(3)在jsp页面中引用标签库,并调用定义的el函数,实现相应的功能。

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><tlib-version>1.0tlib-version><short-name>customelshort-name><uri>http://book.ch5.customel/cfilteruri><function><description>html过滤description><name>cfiltername><function-class>book.ch5.customelfunction-class><function-signature>java.lang.string cfilter( java.lang.string )function-signature>function> taglib> package book.ch5;public final class customel {public static string cfilter(string message) {if (message == null) {return (null);}char content[] = new char[message.length()];message.getchars(0, message.length(), content, 0);stringbuilder result = new stringbuilder(content.length 50);for (int i = 0; i < content.length; i) {switch (content[i]) {case '<':result.append("<");break;case '>':result.append(">");break;case '&':result.append("&");break;case '"':result.append(""");break;default:result.append(content[i]);}}return (result.tostring());} } <%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%> <%@taglib prefix="mlab" uri="http://book.ch5.customel/cfilter"%> 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"%> hello,jstl <%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 使用 <c:remove> 标签 session中的user:

从session中移除user再访问:

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"%> 使用 <c:catch> 标签 <%=169/0%>

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"%> 使用 <c:choose> 标签 您好,${sessionscope.user1}欢迎您,一级管理员!欢迎您,二级管理员!对不起,您只是游客,无权访问该资源!

3.5 迭代标签

迭代标签标签有如下属性:

属性描述是否必要默认值
items要被循环的信息
begin开始的元素(0=第一个元素,1=第二个元素)0
end最后一个元素(0=第一个元素,1=第二个元素)last element
step每一次迭代的步长1
var代表当前条目的变量名称
varstatus代表循环状态的变量名称
<%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ page import="java.util.*" %> 使用 <c:foreach> 标签 <%list booklist = new arraylist();booklist.add("《android应用开发实践教程》");booklist.add("《web应用开发》");booklist.add("《软件项目管理》");booklist.add("《ios程序设计》");session.setattribute("booklist", booklist); %>

图书序号:${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"%> 使用 <c:import> 标签 <%--navigation.jsp--%><%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%> 电影天堂 最新影片 | 经典影片 | 国内电影 | 欧美电影 | 欧美电视 | 最新综艺

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"%> 使用 <c:url> 标签 <%-- redirect_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"%> 使用 <c:redirect> 标签 <%-- main.jsp --%> <%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%> 重定向页面并传递参数

原来你是${param.user}

总结

以上是ag凯发k8国际为你收集整理的el_jstl的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图