JSP技术-02-内置对象/作用域/EL表达式/JSTL标签库
一.九大内置对象
几乎每个JSP页面在处理数据时都要用到request,response,context等对象,所以,JSP2.0规范中定义9个内置对象(隐式对象),将在JSP中常用的对象封装成了内置对象。在JSP页面中,内置对象是由JSP默认创建的,可以直接在JSP页面中直接使用,不需要创建
9个内置对象的类型及功能:
名称 | 类型 | 功能 |
---|---|---|
out | javax.servlet.JspWriter | 用于在页面中输出内容 |
request | javax.servlet.http.HttpServletRequest | 获取用户的请求信息 |
reponse | javax.servlet.http.HttpServletResponse | 服务器返回信息给浏览器 |
config | javax.servlet.ServletConfig | 封装了服务器的配置,可以用来获得初始化参数 |
session | javax.servlet.http.HttpSession | 可以用来获取服务器端存储的信息 |
application | javax.servlet.ServletContext | 所有请求共享的信息 |
page | java.lang.Object | 当前页面经过转换后的Servlet类的实例 |
pageContext | javax.servlet.jsp.PageContext | JSP页面容器,可以用来或取该JSP页面中的属性和对象的值 |
exception | java.lang.Throwable | JSP页面的异常信息 |
pageContext对象:
pageContext对象的功能:
1)可以用来获取其他内置对象
在JSP页面中,使用pageContext对象的getXXX方法可以获取JSP页面中的其他8个内置对象,如想要获取当前页面的request对象,可以调用pageContext的getPageContext( )方法。pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它代表当前JSP页面的运行环境
2) 可以用来存储数据,pageContext对象存储数据是通过操作属性来实现的
方法 | 功能 |
---|---|
void setAttribute(String name,Object value,int scope) | 用于设置pageContext对象的属性 |
Object getAttribute(String name ,int scope) | 用于获取pageContext对象的属性 |
Object findAttribute(String name) | 从4个域对象中查找名称为name的属相 |
参数name指定属性名称,参数scope指定属性作用范围,作用范围参数可以是下面4个值(对应4大域,下面会细讲)
属性值 | 作用范围 |
---|---|
PageContext.PAGE_SCOPE | 整个页面 |
PageContext.PEQUEST_SCOPE | 一次请求 |
PageContext.SESSION_SCOPE | 一次会话 |
PageContext.APPLICATION | 整个web应用 |
使用findAttribute( )方法查找域中的属性时,会按照page,request,session和application的顺序(范围越小,优先级越高)进行查找
二.四大域
“域”的本质是一块存储数据的区域,底层是一个map集合,集合的键是属性名,值是属性值。由于这个map集合是属于JSP中的对象的,而不同对象的生命周期和作用范围又不同,所以“域”的作用范围也不同,只能在固定的范围内存取值。
JSP页面中有4个对象常被用来存取,传递数据,它们被称为4大域
4大域的名称,类型及作用范围:
属性值 | 作用范围 | 域名称 | 域对象类型 |
---|---|---|---|
PageScope | 当前页面 | pageContext | PageContext |
RequestScope | 即从浏览器发出请求到服务器收到请求开始处理,通常只涉及一个页面,如果有请求的转发,则涉及多个页面 | request | HttpServletRequest |
SessionScope | 浏览器和服务器的一次会话,可以在多个请求间共享数据 | session | HttpSession |
Application | 整个项目范围,可以在多次会话间共享数据 | application | ServletContext |
三.EL表达式
EL全名为Expression Language,是一种简单易用的数据访问语言,EL表达式简化了获取Servlet域对象中数据的方式,使JSP页面中的代码更加简洁
3.1 EL的语法
EL表达式的形式:${ 表达式 }
3.2 EL表达式与内置对象
3.2.1 EL表达式可以获取4大域中的属性的值(直接调用域对象)
例如:获取页面中的name属性的值 { pageScope.name }
范例:使用EL表达式获取内置对象中的数据
<%=pageContext.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=session.getAttribute("name")%>
<%=application.getAttribute("name")%>${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}
EL表达式获取其他内置对象中属性的值:
分类 | 使用的方法 | 获取的值 |
---|---|---|
请求参数 | param | 获得一个请求参数 |
请求参数 | paramValues | 获得一组请求参数 |
请求头 | header | 获得一个请求头 |
请求头 | headerValues | 获得一组请求头 |
JSP上下文对象 | pageContext | |
全局初始化参数 | initParam | |
cookie | cookie |
3.2.2 获取请求参数:
请求路径:
/e3mall/userServlet?method=login&username=xxx&password=123&password=111
获取参数:
功能 | EL表达式 |
---|---|
获取一个参数 | ${param.username} |
获取一组参数 | ${paramValues.password} |
获取一组参数中的一个 | ${paramValues.password[0]} |
3.2.3 获取请求头
功能 | EL表达式 |
---|---|
获取请求头中的host参数 | ${header.accept} |
获取请求头中的编码参数(参数只有一个) | ${header[‘accept-Encoding’] |
获取请求头中的编码参数(参数为一个数组) | ${headerValues[‘accept-Encoding’][0]} |
3.2.4 获取pageContext中的属性的值
获取项目路径:
使用JSP标签 | 使用EL表达式 |
---|---|
<%=((HttpServletRequest)pageContext.getRequest()).getContextPath()%> | ${ pageContext.request.contextPath } |
3.2.5 获取项目的初始化参数(web.xml文件中的配置信息)
web.xml文件的配置
<context-param><param-name>namespace</param-name><param-value>/e3mall</param-value></context-param>
获取namespace参数的值:intitParam.person5.获取cookie中的值{ intitParam.person } 5.获取cookie中的值 { cookie.loginUser }
EL获取cookie不是直接调用底层的方法,而是对底层方法进行了部分封装和加强。cookie没有根据属性名操作属性值的API,EL的底层使用request.getCookies( )获得所有cookie,然后遍历并存放到Map中(Map < name,obj >)
四.JSTL技术:
JSTL全名为JSP Standard Tag Library ,即JSP标准标签库。使用JSP标签可以降低JSP页面的复杂度,增强代码的重用性,所以经常使用JSP的人就制作了很多自定义的JSP标签,但是制作这些标签的人并不属于同一个团队,所以有很多标签功能相同,导致学习和使用很不方便,为了方便开发者的使用,sun公司制作了一套标准标签库,即JSTL
JSTL是由5个不同功能的标签库组成的:
标签库 | 对应的URL | 标签前缀 |
---|---|---|
Core | http://java.sun.com/jsp/jstl/core | c |
I18N | http://java.sun.com/jsp/jstl/fmt | fmt |
SQL | http://java.sun.com/jsp/jstl/sql | sql |
XML | http://java.sun.com/jsp/jstl/xml | x |
Functions | http://java.sun.com/jsp/jstl/functions | fn |
常用的JSTL标签:
4.1 if标签
用于执行判断
语法:
例一:
<c:if test="Boolean">${param}
</c:if>
Boolean的值为true则执行标签体中的内容,查找4大域中param属性的内容并显示
例二:
<c:if test="Boolean" var="param" scope="Scope" [scope="{page|request}"]>${param}
</c:if>
将Boolean的值(true或false)赋给param属性,并存放到指定的作用域,若Boolean的值为true执行标签体中内容
属性名 | 功能 |
---|---|
test属性 | 用于设置逻辑表达式,逻辑表达式的计算结果为true则执行标签体中内容,为false则不执行 |
var属性 | 用于指定逻辑表达式的结果的名称 |
scope属性 | 用于指定var属性声明的变量的作用范围,默认值为page |
4.2 forEach标签
用于迭代集合中的元素
1)基本语法:
例一:
<c:forEach var="item" varStatus="status" items="${pageBean}"><td align="center" width="18%">${status.count}</td> <td align="center" width="17%">${item.pname}</td>
</c:forEach>
迭代pageBean集合,并输出元素的序号(从1开始),及元素的pname属性的值
属性名 | 功能 |
---|---|
var属性 | 指定当前迭代到的元素保存到page域中的名称 |
items属性 | 指定被迭代的集合对象 |
varStatus属性 | 指定存有当前迭代到的元素的信息的对象保存到page域中的名称 |
begin属性 | 指定从集合的第几个元素开始迭代,默认从0开始 |
step属性 | 指定迭代因子的增量 |
2)varStatus属性:
用于设置一个javax.servelt.jsp.jstl.core.LoopTagStatus类型的变量,这个变量包含了从集合中取出的元素的状态信息
属性名 | 返回值类型 | 功能 |
---|---|---|
count | int | 元素在集合中的序号,从1开始计数 |
index | int | 元素在集合中的索引,从0开始计数 |
first | boolean | 是否是集合的第一个元素 |
last | boolean | 是否是集合的最后一个元素 |
3)迭代Map集合:
例二:
<c:forEach var="item" items="${pageBean}"><td align="center" width="18%">${item.key}</td> <td align="center" width="17%">${item.value}</td>
</c:forEach>
迭代pageBean(Map集合)中的元素,将每个元素的key和value的值输出
迭代List和Set集合时,var声明的对象就是集合中的元素。而在迭代Map集合时,var声明的则是键和值的关系对象
JSP技术-02-内置对象/作用域/EL表达式/JSTL标签库相关推荐
- javaweb(09) EL表达式JSTL标签库(jsp相关,了解)
javaweb(09) EL表达式&JSTL标签库(jsp相关,了解) EL表达式 简介和基本使用 EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的 ...
- EL 表达式 JSTL 标签库
EL 表达式 & JSTL 标签库 1.什么是EL表达式?EL表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的什么作用:EL 表达式 ...
- Jsp内置对象及EL表达式的使用
一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...
- el表达式,JSTL标签库
1.el表达式 表达式语言(Expression Language,简称EL) EL主要作用: 获取数据: EL表达式主要用于替换JSP页面中的脚本表达式,检索reque ...
- EL表达式 JSTL标签库
EL表达式 什么是EL表达式? 作用? 全称是Expression Langue 是表达式语言 EL表达式的作用主要是替代jsp页面中的表达式脚本在jsp页面中方进行输出,因为EL表达式在输出数据的时 ...
- 第4章 JSP语法、内置对象
第4章 JSP语法.内置对象 关于Spring Boot+Vue全栈开发实战(三方面)前端 全栈 Spring Boot JSP概述 4.1.1 什么是JSP(Java Server Page) 4. ...
- jsp输出金字塔_实验二 JSP语法及内置对象.doc
实验二 JSP语法及内置对象 燕山大学经济管理学院 JSP编程技术 实验指导书 经济管理学院电子商务系 2011年5月 实 验 说 明 <JSP编程技术>JSP(Java Server P ...
- 编写两个jsp页面inputString.jsp 和computer.jsp,用内置对象获取inputString.jsp页面提交的字符串。
编写两个jsp页面inputString.jsp 和computer.jsp,用户可以并使用inputString.jsp提供的表单输入一个字符串,并提交给computer.jsp页面,该页面通过内置 ...
- JSP的out内置对象及其常用方法
JSP全名为Java Server Page,即Java服务器语言,是一种简化的Servlet语言,与ASP相似,用于动态网页的设计,下面我们就简单讲一下JSP的out内置对象以及一些常用的方法,ou ...
- El表达式+jstl标签
目录 前言 EL获取数据(从四大域中获取属性) 1.如果没有使用EL的内置对象,则查找数据顺序是依次按照由小到大范围从四大域中查找指定名称的属性值 2.EL中的内置对象 1.域属性相关(4个) 2.其 ...
最新文章
- 开源项目贡献者_嘿新手开源贡献者:请写博客。
- JAVA实现二维数组中的查找(《剑指offer》)
- class.forname()中要写相对路径吗?_你喜欢这里吗?翻译成“Do you like here?”是错误的,为啥呢?...
- 移动app部分机型无法唤起h5支付宝支付_谜之wxs,uni-app如何用它大幅提升性能
- js中的弹窗alert、confirm和prompt
- 给java程序员网址_程序员常用网址,必须收藏
- 使用CLion配置第一个FLTK界面
- python可视化库matplotlib_Python数据可视化库-Matplotlib(一)
- 关于java方法的重载(Overloading),覆写(Override)以及final 方法的几点说明
- Java 面试简答题
- Markdown缩进控制
- oracle-01722,函数subtr,instr
- 【设计模式02】 抽象工厂模式
- busboy中文文件名乱码问题
- ArcGIS中地表径流
- 切绳子题解(博客搬家)
- 初学JavaScript之猜测new操作符的原理
- 前端插件,你不容错过
- U盘装系统装了一半就装不了 U盘装系统失败了怎么办
- 无线自由,无所畏“飓”!HyperX Cloud飓风无线电竞游戏耳机推荐
热门文章
- SQL:mysql将datetime类型数据格式化
- Python根据mask在原图上进行标记
- 05. Django基础:请求和响应
- SLAM_轨迹算法精度评价指标(ATE、RPE)
- 分布式存储系统学习笔记(二)—分布式文件系统(4)—内容分发网络(CDN)
- [洛谷P5431]【模板】乘法逆元2
- 415 Add Strings 字符串相加
- 解决Ubuntu下Sublime Text 3无法输入中文
- struts2 与 spring 整合
- 人工智能系统Google开源的TensorFlow官方文档中文版