jsp进阶

news2024/11/17 17:23:23

文章目录

  • jsp进阶
    • 内容回顾
    • JSP 的九大内置对象
    • 内置对象的创建
    • 九大内置对象详解
    • 四大作用域对象
    • 四大作用域范围总结
    • EL 进阶
    • JSTL 标准标签库
    • JSTL 核心标签


jsp进阶

内容回顾

jsp 创建
jsp 的工作原理:翻译 --> 编译 --> 运行
翻译:第一次访问 jsp 页面时,服务器进行 jsp 页面的翻译,将 jsp 翻译为一个 java
类,该类被称为是一个 servlet 类;
jsp 组成:
① 脚本:<% java 代码>
② java 表达式:<%= java 代码>
③ 声明: <%! 变量>
④ jsp 指令:三大指令:page/include/taglib
⑤ el 表达式(${}):是 java 表达式的替代品,可以更简单进行数据的获取
⑥ jsp 动作:
jsp:useBean -- 创建实体类对象
jsp:setProperty -- 指定实体属性的设置
jsp:getProperty -- 获取指定实体类的属性
jsp:forward -- 进行页面的转发
jsp:param -- 页面转发时携带参数的设置
jsp:include -- 动态页面包含,所有涉及到的 jsp 页面,都会翻译成对应的
java 类;

JSP 的九大内置对象

内置对象简介

内置对象也称为隐式对象,不需要人为的创建,在 jsp 页面已经初始化好并且封装好了的,
可以直接使用;九大内置对象分别为:
① application -- 服务器对象
② session -- 会话对象
③ page -- 当前页面,类似与 java 程序中的 this 对象
④ request -- 请求对象
⑤ response -- 响应对象
⑥ out -- 页面输出对象
⑦ config -- 配置对象
⑧ pageContext -- 页面全局对象
⑨ exception -- 异常处理对象

在这里插入图片描述

在 jsp 页面中,使用 <% 快捷键补全 %>,就可以看到 8 个内置对象,exception 对象
没有,exception 是关于页面异常处理的内置对象,需要将 page 指令中 isErrorPage
= "true" 才会显示异常处理对象;
或者使用 pageContext 对象进行获取,pageContext.getException();

内置对象的创建

内置对象不用编程人员创建,系统会自动创建好,那系统什么时候?在哪?进行内置对象的创
建?
通过查看 jsp 页面翻译后的 java 类文件可以查询到,在 翻译后的类文件中会有一个
jspService 方法,在该方法的内部进行了内置对象的创建;

在这里插入图片描述

九大内置对象详解

application

是一个作用域对象,可以将信息保存在服务器中,直到服务器关闭;否则在任意时候我们都可 以从服务器中获取 application域对象中储存的数据;该对象生命周期为服务启动到服务 器关闭;其作用域为整个 web 应用;

request

请求作用域对象,可以将信息保存在一次请求中,主要用于 http 协议传送到服务器的请求数 据。该对象代表了客户端的请求信息,其作用域为一次请求;

response

该对象代表客户端响应信息,主要是将需要的数据发送给客户端,一般返回的是经过容易处理 的或者是有数据渲染的 jsp 页面

config

用于服务器的配置信息描述,可以通过 pageContext 提供的 getServletConfig 方法 进行获取;当一个 servlet 被初始化时,容器会把某些信息通过该对象传递给 servlet; 一般在 web.xml 中进行基本配置;

page

当前页面对象,就跟 this 对象一个意思;

session 对象

域对象,会话对象,服务器启动时会自动为每一个用户创建一个会话对象,用来保存当前用户 的信息;只要浏览器不关闭,在设定的时间内这个用户的信息会保存在session对象中;其作 用域为一次会话

out 对象

请求作用域对象,可以将信息保存在一次请求中,主要用于 http 协议传送到服务器的请求数据。该对象代表了客户端的请求信息,其作用域为一次请求; 该对象代表客户端响应信息,主要是将需要的数据发送给客户端,一般返回的是经过容易处理 的或者是有数据渲染的 jsp 页面;

exception 对象

该对象用于展示页面异常信息,只有在 page 指令设置 isErrorPage = true 后才会创建该对象;该对象几乎继承了所有的异常类,可以描述几乎所有的异常状态;

pageContext 对象

该对象的作用是获取任何范围的参数,因为通过该对象可以获取其他任意的内置对象,该提对 象提供了 getXX() 的方法进行其他内置对象的获取;该对象还可以获取项目的根路径; 获取项目根路径的方法:pageContext.getServletContext.contextPath

四大作用域对象

application:只要服务器不关闭,值永远保存;
session:面对浏览器,只要不主动退出,会话存在,值就存在;
request:面向求情,一次请求;
pageContext:面向页面,某一个页面的作用域;
作用域的范围大小:
application > session > request > pageContext
所有的域对象都有用户参数设置和获取的方法:
setAttribute(key,value);
getAttribute(key)

四大作用域范围总结

该对象用于展示页面异常信息,只有在 page 指令设置 isErrorPage = true 后才会创
建该对象;该对象几乎继承了所有的异常类,可以描述几乎所有的异常状态;
该对象的作用是获取任何范围的参数,因为通过该对象可以获取其他任意的内置对象,该提对
象提供了 getXX() 的方法进行其他内置对象的获取;该对象还可以获取项目的根路径;
获取项目根路径的方法:pageContext.getServletContext.contextPath

EL 进阶

当使用多个域对象设置参数时,使用 el 表达式进行数据获取时,默认是按照最小范围的作用
域开始进行参数的匹配,如果最小的范围中没有该参数,接着往上一个作用域中进行查找,一
直到 application 作用域;
如果所有的作用域中都没有 el 表达式中获取的参数,结果显示为空;
任意一个作用域或者多个作用域中有 el 表示中获取的参数,显示结果为较小的作用域设置的
值;
如果要获取指定作用域中设置的值,是使用 el 表达式进行数据时,可以在获取的参数前面加
上指定的域对象;如果不加会从最小的作用域开始查找;

el 获取数据时无域对象指定

在这里插入图片描述
在这里插入图片描述

el 获取指定域对象中的数据

在这里插入图片描述

在这里插入图片描述

JSTL 标准标签库

简介

JSTL 全称为 JavaServer Pages Standard Tag Labrary --- jsp 标准标签库;
主要提供了供 JavaWeb 开发人员使用的一个标准的标签库,该标签库功能比 html 提供的
标签更强大;可以使用 jstl 提供的标签取代传统的 java 代码;提高的程序的可读性、体
验感、维护性;
JSTL 通常和 el 表达式配合使用,使用 el 表达式来获取数据,用 JSTL 提供的标签来操
作数据;
JSTL 除了有标准的标签库以外,还提供了 JSTL 函数,也可以使用函数进行数据的操作;

JSTL 的使用

① 下载 jar 包,建议使用 1.2 版本,1.1 版本为过时的版本;
② 在 jsp 页面中使用 taglib 指令进行 jstl 的引入;
引入的格式:<% taglib uri="jstl资源路径" prefix="c" %>

在这里插入图片描述
在这里插入图片描述

JSTL 核心标签

通用标签

① 设置参数标签 set
<c:set var="参数名称" value="值" scope="域对象"></c:set>
② 输出标签 out -- 相当于 <jsp:getProperty> 或者是 <%= %>
<c:out value="参数名称"></c:out>
③ 删除标签 remove -- 删除指定参数
<c:remove var="参数名称"></c:remove>

在这里插入图片描述
在这里插入图片描述

分支标签

分支标签类似于 java 中的分支结构;
① 单分支标签 if
<c:if test="条件表达式">标签内容</c:if>
当条件表达式成立,标签内容被执行,条件表达式不成立,标签内容不执行
② 多分支标签 choose - when - otherwise
<choose>
<when test="条件表达式">内部代码</when>
<when test="条件表达式">内部代码</when>
········
<otherwise>内部代码</otherwise>
</choose>
从上往下依次运算 when 标签的条件表达式,如果某个表达式成立,执行对应 when
标签中的内容,一旦某一 when 标签的条件表达式成立,后面所有的 when 标签条件表达式
都不再继续运算;
换句话说,一个 when 标签表达式成立,执行内部的代码,分支结构结束;
只有所有的 when 标签条件表达式都不成立,才会执行 otherwise 标签内部的代
码

单分支结构
在这里插入图片描述
多分支结构

在这里插入图片描述
循环标签

可以对容器进行遍历;
<c:foreach items="需要遍历的容器" var="变量" varStatus="count">
</c:foreach>
items 属性用来指明遍历的容器,容器通常是集合或者数组,使用 el 表达式进行获取;
var 属性用来声明变量,每一次针对容器的遍历结果会储存到 var 声明的变量中
varStatus 属性用来描述当前遍历出来的对象状态,该状态有个属性:
count -- 用来实现对象的计数,序号从 1 开始
index -- 用来表示遍历对象的索引,序号从 0 开始
first -- 获取第一个遍历对象
last -- 获取最后一个遍历对象

在这里插入图片描述
在这里插入图片描述
导入标签

导入标签类似于 include 指令或者动作标签,用来实现其他页面的引入操作;
<c:import url="资源路径"></c:import>
资源路径:一般使用相对路径,也就是项目中存在的其他页面;

JSTL 函数

JSTL 函数大部分是针对字符串的操作;
使用函数之前需要进行函数的引用,就跟使用核心标签库一样,需要通过 page 指定进行指定
uri 访问,和别名的命名;
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"
%>
在引入后就可以使用 jstl 提供的函数;所有的函数如下图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis简单笔记

1 为什么需要Redis 数据分冷热&#xff0c;将热数据存储到内存中 2 Redis应用案例 2.1 连续签到 2.1.1 String数据结构 可以存储字符串、数字、二进制数据通常和expire配合使用场景:存储计数、Session2.2 消息通知 用list作为消息队列 使用场景:消息通知。 例如当文章更新时…

机器学习模型的可解释性算法汇总!

模型可解释性汇总简 介目前很多机器学习模型可以做出非常好的预测&#xff0c;但是它们并不能很好地解释他们是如何进行预测的&#xff0c;很多数据科学家都很难知晓为什么该算法会得到这样的预测结果。这是非常致命的&#xff0c;因为如果我们无法知道某个算法是如何进行预测&…

巴别塔——问答平台调研

项目内容这个作业属于哪个课程2023 年北航软件工程这个作业的要求在哪里个人作业-软件案例分析我在这个课程的目标是了解软件工程的方法论、获得软件项目开发的实践经验、构建一个具有我的气息的艺术品这个作业在哪个具体方面帮助我实现目标对于“程序员是什么”这个问题有了一…

【ChatAug: Leveraging ChatGPT for Text Data Augmentation 论文精读】

ChatAug: Leveraging ChatGPT for Text Data Augmentation 论文精读InformationAbstract1 Introduction2 RELATED WORK2.1 Data Augmentation2.2 Few-shot Learning2.3 Very Large Language Models2.4 ChatGPT: Present and Future3 DATASET3.1 Symptoms Dataset3.2 PubMed20k …

Qt扫盲-CMake 使用概述

CMake 使用概述一、概述二、创建Qt CMake 项目三、简单介绍1. 引入Qt的库2.Qt CMake 引入第三方库3. Qt CMake 项目目录四、使用案例一、概述 CMake是一个简化跨不同平台开发项目的构建过程的工具。对C来说其实就是生成一个文件&#xff0c;文件里面描述了&#xff0c;怎么组织…

【MyBatis】MyBatis操作数据库

MyBatis操作数据库 文章目录MyBatis操作数据库:one:什么是MyBatis:two:创建SSM项目引入依赖配置文件设置MyBatis底层逻辑:three:实现CRUD功能查询全列查询带参数的查询新增获取自增主键删除更新:four:参数占位符&#xff1a;#{}和${}不支持String参数问题${}使用场景&#xff1…

javascript的ajax

学什么Ajax基础JSON跨域XHR对象Ajax进阶Ajax应用Ajax扩展Ajax基础初识 AjaxAjax的基本用法GET请求POST请求JSON初识JSONJSON的3种形式JSON的常用方法跨域初识跨域CORS跨域资源共享JSONPXHR 对象XHR的属性XHR的方法XHR的事件Ajax进阶FormData封装Ajax使用Promise改造封装好的Aja…

Linux 进程:进程退出返回值的获取

目录一、对输出参数status的理解二、获取进程退出返回值1.位运算(1)异常退出码(2)进程返回值2.宏函数我们常使用函数 wait 和 waitpid 来执行进程等待的功能&#xff1a;处理退出的子进程并释放资源&#xff0c;防止子进程变成僵尸进程。而这两个函数都有一个输出参数status&am…

【LeetCode】第 99 场双周赛

1. 最小和分割 给你一个二维整数数组 ranges &#xff0c;其中 ranges[i] [starti, endi] 表示 starti 到 endi 之间&#xff08;包括二者&#xff09;的所有整数都包含在第 i 个区间中。 你需要将 ranges 分成 两个 组&#xff08;可以为空&#xff09;&#xff0c;满足&am…

单板TVS接地不当造成辐射骚扰超标问题分析-EMC

【摘要】 某产品EMC辐射骚扰测试超标&#xff0c;通过近远场扫描配合定位分析&#xff0c;逐步找出骚扰源、传播路径&#xff0c;最终通过修改 PCB 走线切断传播路径解决此问题。 1 故障现象 某产品在进行 EMC 研发摸底测试时发现&#xff0c;整机辐射骚扰垂直方向测试超标&a…

Cesium实现的光柱效果

Cesium实现的光柱效果 效果展示: 可以通过拼接两个entity来实现这个效果: 全部代码; index.html <!DOCTYPE html> <html><head><meta charset

HBase写入流程详解

HBase采用LSM树架构&#xff0c;天生适用于写多读少的应用场景。在真实生产线环境中&#xff0c;也正是因为HBase集群出色的写入能力&#xff0c;才能支持当下很多数据激增的业务。需要说明的是&#xff0c;HBase服务端并没有提供update、delete接口&#xff0c;HBase中对数据的…

C++实战md5、base64算法实现(附源码)

C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、常用加密算法1. md5是什么二、源码1. md52. base64、decode总结前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项目中拿来就用的效果,这样更好的服务…

WebStorm + JetBrains IDE Support 实现自动刷新功能

找了半天&#xff0c;还借了朋友一个vpn,然后发现&#xff1a; JetBrains IDE Support已经下架&#xff1a; 关于插件JetBrains IDE Support在chrome商店中消失_webstorm启动chrome没有插件_kesin_lee的博客-CSDN博客 在写Html网页时&#xff0c;参考WebStrom说明文档&#xf…

【MySQL】P1 数据库基础以及MySQL下载安装

MySQL数据库基本概念MySQLSQL 简介前言 本篇博文为 MySQL 系列博文第一弹&#xff0c;主要围绕数据库基本概念&#xff0c;MySQL数据库下载安装以及SQL分类进行介绍。 下一篇博文将围绕 DDL 进行学习记录。 链接&#xff1a; 正文 数据库基本概念 数据库&#xff1a;存储数据…

华为OD机试用Python实现 -【垃圾信息拦截】 |2023.Q1 A卷

华为OD机试题 最近更新的博客华为 OD 机试 300 题大纲本篇题目:垃圾信息拦截题目描述输入描述输出描述示例一输入输出说明示例二输入输出编码思路和算法逻辑Python 代码实现最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单

python智能停车场车牌识别计费系统百度ai

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python停车场 获取完整源码源文件说明文档可执行文件等 在PyCharm中运行《智能停车场车牌识别计费系统》即可进入如图1所示的系统主界面。 说明&#xff1a;在运行程序前&#xff0c;先将当前的计算机连接互联网&#xff0…

Windows+VS2019用vcpkg编译colmap

WindowsVS2019用vcpkg编译colmap Window下官方建议用vcpkg安装。这里我已经安装好了VS2019以及cuda11.7。 1.安装vcpkg git clone https://github.com/microsoft/vcpkg cd vcpkg .\bootstrap-vcpkg.bat2. 使用vcpkg编译colmap .\vcpkg install colmap[cuda,tests]:x64-wind…

cuda调试(一)vs2019-windows-Nsight system--nvtx使用,添加nvToolsExt.h文件

cuda调试 由于在编程过程中发现不同的网格块的结构&#xff0c;对最后的代码结果有影响&#xff0c;所以想记录一下解决办法。 CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid cuda context (上下文) context类似于CPU进程上下&#xff0c;表示由管理层 Drive …

信息系统项目管理师——OSI模型、协议

OSI七层网络模型&#xff08;掌握&#xff09; 应用层&#xff1a;对软件提供接口以使程序能使用网络服务&#xff0c;如事务处理程序、文件传送协议和网络管理等。&#xff08;HTTP、Telnet、FTP、SMTP&#xff09;表示层&#xff1a;程序和网络之间的翻译官&#xff0c;管理…