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

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的九大隐含对象(内置对象)

对象描述
requestHttpServletRequest类的实例(请求对象)
responseHttpServletResponse类的实例(响应对象)
outPrintWriter类的实例,用于把结果输出至网页上(jsp的输出流对象)
sessionHttpSession类的实例(会话对象)
applicationServletContext类的实例,与应用上下文有关(ServletContext对象)
configServletConfig类的实例(ServletConfig对象)
pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问(jsp的上下文对象)
page类似于Java类中的this关键字(当前的jsp对象)
exceptionexception 类的对象,代表发生错误的 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>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林中有神君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值