javaweb——jsp(学习总结,javaweb必备技能)

2023-11-12

1、jsp简介

什么是jsp,jsp有啥用?
在这里插入图片描述

  • JSP全称Java Server Pages,是一种动态网页开发技术
  • JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分( 哎! 实际上就是servlet)
  • JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

当我们在第一次访问jsp页面的时候,在控制台下方我们会看到类似这样几个地址
在这里插入图片描述

  • catalina.home(安装目录):指向公用信息的位置,就是bin和lib的父目录。

  • catalina.base(工作目录):指向每个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录

当我们打开工作目录会发现,Tomcat服务器会把我们的jsp页面翻译成为一个java源文件,并编译成字节码文件
在这里插入图片描述打开这个源文件,我们会发现这样一段代码
在这里插入图片描述通过源代码,我们发现,实际上HttpJspBase实际上继承了HttpServlet
在这里插入图片描述
所以通过以上我们发现,jsp其实就是Servlet

2、jsp的生命周期

jsp和servlet一样有四个阶段,所以说这也是jsp和servlet的相似之处。

  • 编译阶段:

    servlet容器编译servlet源文件,生成servlet类

  • 初始化阶段:

    加载与JSP对应的servlet类,创建实例,并调用它的初始化方法

  • 执行阶段:

    调用与JSP对应的servlet实例的服务方法

  • 销毁阶段:

    调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例

1、JSP编译

当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。

编译的过程包括三个步骤:

  • 解析JSP文件。
  • 将JSP文件转为servlet。
  • 编译servlet。

2、JSP初始化

容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了,就像下面这样:

public void jspInit(){
  // 初始化代码
}

3、JSP执行

jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // 服务端处理代码
}

4、jsp销毁

jspDestroy()方法

public void jspDestroy()
{
   // 清理代码
}

在这里插入图片描述

3、jsp的三种语法

3.1、头部的page 指令

指令 描述
<%@ page … %> 定义网页依赖属性,比如脚本、缓存、报错页面
<%@ include … %> 包含其他文件
<%@ taglib … %> 引入标签库的定义

例如:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

3.1.1、page指令的相关属性

属性 描述
buffer 指定out对象使用缓冲区的大小
autoFlush 控制out对象的 缓存区
contentType 指定当前JSP页面的MIME类型和字符编码
errorPage 指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends 指定servlet从哪一个类继承
import 导入要使用的Java类
info 定义JSP页面的描述信息
isThreadSafe 指定对JSP页面的访问是否为线程安全
language 定义JSP页面所用的脚本语言,默认是Java
session 指定JSP页面是否使用session
isELIgnored 指定是否执行EL表达式
isScriptingEnabled 确定脚本元素能否被使用

3.2、表达式脚本

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

3.3、jsp注释

<!--这是html注释-->
<%--这是jsp注释--%>
<% 
// 单行 java 注释 
/* 多行 java 注释 */
%>

4、jsp的九大隐含对象(内置对象)

对象 描述
request HttpServletRequest类的实例(请求对象)
response HttpServletResponse类的实例(响应对象)
out PrintWriter类的实例,用于把结果输出至网页上(jsp的输出流对象)
session HttpSession类的实例(会话对象)
application ServletContext类的实例,与应用上下文有关(ServletContext对象)
config ServletConfig类的实例(ServletConfig对象)
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问(jsp的上下文对象)
page 类似于Java类中的this关键字(当前的jsp对象)
exception exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象

5、jsp的四大域对象(也可以说是jsp的四个作用域)

  1. pageContext (pageContextImpl类) 作用在当前jsp页面
  2. request (HttpServletRequest类) 作用于一次请求内
  3. session (HttpSession类) 作用与一个会话内
  4. application (ServletContext类) 作用于整个web工程

jsp的域对象就像java中的Map,是用来存值的。

四大域对象的优先顺序从小到大排序

6、jsp的常用标签

6.1、静态包含

应用场景
在这里插入图片描述比如某博官网的底部的城市选项,每一页都是一样的,在写代码的时候能每页都写一样的代码,那当然是不能的,意思这里就会用到相同的代码,咱们把相同的代码放在比如a.jsp里,再在主页面去包含它就可以实现代码的复用。

<% include file ="/page/a.jsp"%>

6.2、动态包含

动态包含和静态包含的作用效果是一样的,只是底层实现不一样

写法:<jsp:include page="..." />

或者:<jsp:include page="..."> </jsp:include>

静态包含的本质:它的本质是文件的导入(不会对导入的文件进行编译)

动态包含的本质:它的本质是先编译包含的文件,然后再进行导入

6.3、jsp的请求转发

jsp的请求转发和servlet的请求转发相似

例如:

<jsp:forward page="/a.jsp"></jsp:forword>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javaweb——jsp(学习总结,javaweb必备技能) 的相关文章

随机推荐

  • HTML基础——以四个标签为例

    目录 HTML 标题 实例 HTML 段落 实例 HTML 链接 实例 HTML 图像 实例 一个完整的代码 想要在网页显示图片 本章涉及的资源 eg mouse jpg HTML 标题 HTML 标题 Heading 是通过 h1 h6
  • 【数据结构】栈和队列(Stack&Queue)解析 (你能看到封面里的字吗?)

    和光同尘 我的个人主页 TECH OTAKUS SAVE THE WORLD 栈和队列 栈 栈的概念及结构 栈的实现 栈的基本操作 1 初始化栈 2 入栈 3 出栈 4 返回栈顶元素 5 返回栈的大小 元素数量 6 判断栈是否为空 7 栈的
  • 局部变量和全局变量,以及作用范围

    在写工程文件的时候 犯了一个基础性的错误 基础不牢 地动山摇 所以通过查阅资料回顾了一些相关知识 并记录下来 防止以后再发生这种惨案 变量按存储区域分 全局变量 静态全局变量和静态局部变量都存放在内存的静态存储区域 局部变量存放在内存的栈区
  • 解一元二次不等式

    题目要求 写一段程序 要求输入abc和符号然后由程序运算出该一元二次不等式的解集 pre class cpp include pre
  • 斐波那契II--规律/二分

    题目描述 小C养了一些很可爱的兔子 有一天 小C突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行繁衍 一对兔子从出生后第二个月起 每个月刚开始的时候都会产下一对小兔子 我们假定 在整个过程中兔子不会出现任何意外 小C把兔子按出
  • 《深入理解计算机系统》实验四Architecture Lab下载和官方文档机翻

    前言 深入理解计算机系统 官网 http csapp cs cmu edu 3e labs html 该篇文章是是实验四Architecture Lab中的Writeup archlab pdf Simguide pdf和全部文件夹的REA
  • CBAM论文解读

    代码 https github com Jongchan attention module CBAM convolutional block attention module 表示卷积模块的注意力机制模块 是一种结合了空间 spatial
  • matlab数字信号处理(1)——正弦信号生成与时域分析

    写在前面 最近一直在用matlab在所信号处理算法的仿真工作 这一系列博客主要会分详一下遇到的一些问题及解决办法 和一些常用的功能模块的实现以及分分享 一 正弦信号生成 一段正弦信号 主要设计这些参数的设置 采样率 理论上来说要满足奈奎斯特
  • 用MapReduce实现2个表的join连接与查询

    首先准备两个CVS表单 我第一个表单为customer 第二个表单为order 接着实现2表连接查询 首先写一个实体类CustomerOrder 定义变量 package cn kgc kb15 demo05 import org apac
  • 克鲁斯卡尔算法(Kruskai)和普里姆算法(Prim)

    动画参考视频 最小生成树 Kruskal 克鲁斯卡尔 和Prim 普里姆 算法动画演示 哔哩哔哩 bilibili 克鲁斯卡尔算法 Kruskai 克鲁斯卡尔算法 从边的角度求网的最小生成树 时间复杂度为O eloge 和普里姆算法恰恰相反
  • python实现水仙花数

    水仙花数 Narcissistic number 也被称为超完全数字不变数 pluperfect digital invariant PPDI 自恋数 自幂数 阿姆斯壮数或阿姆斯特朗数 Armstrong number 水仙花数是指一个 3
  • 微信小程序wx.getUserProfile接口的使用

    导语 1 为什么要增加 getUserProfile接口 2 接口改变之后带来的影响 3 改版之后如何使用getUserProfile接口 1 为什么要增加getUserProfile 先上链接getUserProfile微信开发者文档 曾
  • 普源示波器 电脑 连接 软件_macOS Catalina上手体验:电脑与手机平板加速融合

    10月4日上午消息 秋季到来 苹果陆续发布正式版iOS 13 iPadOS等系统 今天 用于电脑产品线的macOS Catalina也终于正式上线了 经过使用后 新浪数码带大家一起看看新系统具体有哪些更新呢 新浪数码 贾乾 旧功能的改善部分
  • 流媒体服务器 客户端播放器方案推荐

    https github com jacke121 stream rtsp 使用说明 貌似把rtsp转为webrtc 但是没有把图片编码为webrtc Example config json server httpPort 8000 htt
  • 解决IDEA插件Plugins加载问题

    解决IDEA插件Plugins加载问题 1 找到plugins 2 添加镜像https plugins jetbrains com plugins alpha 5047
  • 风险平价策略python代码_风险平价组合(risk parity)理论与实践

    本文介绍了风险平价组合的理论与实践 后续文章将对risk parity组合进行更深入探讨以及引入预期收益后的资产配置实战策略 前言 资产配置是个很广泛的话题 在投资中是一个非常重要的话题 从使用场景分类上来看 资产配置可以是宏观的资产配置
  • javascript高级 --- 惰性函数

    一 介绍 惰性函数表示在函数执行的过程中 函数会在首次被成功调用的时候覆盖当前函数 成功后的逻辑不会被执行 二 案例 因为浏览器行为之间的差异 我们在处理一些差异的同时 必须考虑其兼容性问题 例如 addEventListener remo
  • 微服务swagger公共模块(SpringBoot 2.7.7 Swagger 3.0.0)

    一 SpringBoot和Swagger版本 SpringBoot
  • 电脑安装多个版本Java如何进行快速切换

    安装好Java之后 首先查看环境变量 在Path栏中寻找地址值为 C盘 java bin 之类的值 删除 然后找到该目录 删除具有java exe javaw exe javaws exe的文件夹 我们可以运用批处理脚本 进行快速的Java
  • javaweb——jsp(学习总结,javaweb必备技能)

    javaweb jsp 1 jsp简介 2 jsp的生命周期 3 jsp的三种语法 3 1 头部的page 指令 3 1 1 page指令的相关属性 3 2 表达式脚本 3 3 jsp注释 4 jsp的九大隐含对象 内置对象 5 jsp的四