一、jSP简介(前置知识)

一、jSP简介

1 jsp基本概念

​ jsp是一种动态网页技术标准。jsp是JavaServer Pages的缩写,它由Sun 公司倡导,多家公司参与的一项Web服务设计标准。以java语言为基础,具有动态页面与动态页面分离,是动态网站的主流开发技术之一。学习jsp需要有java和HTML等前置基础知识。

​ jsp部署在网络的服务器中,能够响应客户端发送的请求,且按照请求的内容动态生成XML、HTML或者别的格式文档的Web网页,再返回给请求者。

2 配置java环境变量

2.1下载安装

下载地址: https://www.oracle.com/cn/java/technologies/downloads/

安装:

安装就是解压的过程,安装过程中全部默认,一直下一步即可,但是记住安装路径。配置环境变量会用到该路径。

在这里插入图片描述
安装完成后会在安装路径下生成两个文件夹。

在这里插入图片描述

jdk和jre的区别为:

**JRE:**java runtime environment (java运行时环境),是提供给 Java 程序运行的最小环境。包含了java虚拟机、java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。(该文件可以删除)

**JDK:**java development kit (java开发工具),JDK 是用于开发 Java 程序的最小环境。是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。运行java程序只需安装JRE。如果需要编写java程序,需要安装JDK。JDK包含JRE 。

可以将jdk文件夹保存,以后再进行配置环境变量,无须使用安装包,仅需要将该文件夹复制到某个位置,并配置环境变量即可。

2.2 环境配置

第一步,配置JAVA_HOME

​ 该步骤不可省略,不能直接配置path,虽然不配置JAVA_HOME,直接配置Path,对应运行java程序没有什么问题,但使用其他依赖于java环境的软件工具时,会出现无法运行的情况,所以应规范配置。

第二步,配置path

window版本的不同,界面有细微不同,但配置方式一致。

Path 变量的作用是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。

在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/d2ae92b87a6b4d1ba55f093b7bbf7357.png#pic_center

第三步,验证

打开控制台(win+R,输入cmd),输入java -version,若看到如下界面,则配置成功。
在这里插入图片描述

3 安装配置Tomcat

3.1 Tomcat简介

  • Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP,少量JavaEE规范。
  • JavaEE: Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。
  • 因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行。
  • Tomcat的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。

3.2下载安装

选择合适版本,解压即安装完成,卸载删除解压文件即可
在这里插入图片描述在这里插入图片描述

3.3 目录结构简介

解压后能看到如下目录结构,每个目录中包含的内容需要认识下,
在这里插入图片描述

1.bin目录

存放一些可执行的二进制文件,.sh结尾的为linux下执行命令,.bat结尾的为windows下执行命令。

2. conf目录**

存放tomcat相关配置文件的。

3. lib目录**

存放tomcat依赖jar包的。其中ecj-x.x.x.jar起到了将.java文件编译成.class字节码文件的作用。

4. logs目录

存放tomcat运行时产生的日志文件。在windows环境中,日志文件输出到catalina.xxxx-xx-xx.log文件中。

在linux环境中,日志文件输出到catalina.out文件中。

5. temp目录

用户存放tomcat在运行过程中产生的临时文件(清空不会对tomcat运行带来影响)。

6. webapps目录

用来存放应用程序,可以以文件夹、war包、jar包的形式发布应用。

默认自带以下5个项目:
在这里插入图片描述

7. work目录**

用于存放tomcat在运行时的编译后文件(清空该目录下所有内容,重启tomcat,可达到清除缓冲的作用)

3.4 启动

  • 执行 bin/startup.bat 启动tomcat
  • 启动后访问http://localhost:8080/可以看到欢迎页面,则启动成功。

在这里插入图片描述

3.5 可能出现的问题

1 若页面一闪而过,则可能是由于JAVA_HOME配置错误

2 Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml,可选端口号取值范围是0-65535之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误
在这里插入图片描述在这里插入图片描述

3,若控制台启动信息乱码如下所示
在这里插入图片描述

可以通过一下方式解决,修改conf中logging.properties文件,将所有UTF-8改为GBK。
在这里插入图片描述

3.6 关闭

关闭有三种方式

  • 直接x掉运行窗口:强制关闭
  • bin\shutdown.bat:正常关闭
  • ctrl+c: 正常关闭

3.7 项目部署

  • 直接将资源文件放置到webapps下即部署完成。
  • 若将war包放置到webapp下可以自动完成解压,如将index.html打包成ttest.war,将其放到webapps目录下,自动生成test>index.html 可以通过http://localhost:8080/test/inext.html访问。
  • war包,后期我们会借助于IDEA工具来生成。
  • tomcat默认根目录是webapps/ROOT,若将intxt.html放置ROOT下,则访问路径为http://localhost:8080/inext.html

3 运行原理

3.1 JSP 主要作用与本质

  • 代替 Servlet 程序回传 HTML 页面的数据。

  • JSP 在本质上就是一个 Servlet 程序

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

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

    • 解析JSP文件。
    • 将JSP文件转为servlet。
    • 编译servlet。
  • 当多个用户请求同一个jsp页面时,Tomcat服务器会为每个用户启动一个线程,响应用户的请求。

3.2 jsp生命周期

  • 编译阶段:

    • 当web容器(tomcat)接收到用户的对jsp页面的第一次请求时,jsp引擎将这个jsp页面转换为java源代码(servlet类),

    • 如果发现jsp文件有任何的语法错误,转换过程将终止,并向服务器和客户端输出错误信息,

    • 如果转换成功。然后jsp引擎用javac编译java源代码生成class文件,然后web容器加载class文件并从此创建一个新的servlet对象进行实例化。

  • 初始化阶段:

    当 Servlet 类实例化后,容器加载 jspInit方法,该方法可以重写,如载入数据库驱动程序、初始化一些值等等。这个方法一般为空,该方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。

    尤其要注意,可以查看父类HttpJspBase,HttpJspBase是一个抽象类,说明该类的方法可以由其子类来实现,init()中调用了jspInit()与_jspInit(),destroy()中调用了jspDestroy()和_jspDestroy()方法。_jspInit方法是容器生成的,若重写该方法会报错。

  • 执行阶段:

    jspService()方法被调用来处理客户端的请求。用户再次访问这个jsp时,容器回再次创建响应,直到容器卸载了这个class文件。

  • 销毁阶段:

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

JSP生命周期的四个主要阶段和servlet生命周期非常相似,下面给出图示:

在这里插入图片描述

可以重写相关方法进行验证:

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>
<%@ page import="java.text.*" %>
<html>
  <head>
    <title>jsp生命周期测试</title>
  </head>
  <body> 
  <%!
    private int initVar = 0;
    private int serviceVar = 0;
    private int destroyVar = 0;
  %>
  <%!
    public void jspInit(){
        initVar++;
        System.out.println("初始化了"+initVar+"次");
  }
    public void jspDestroy(){
        destroyVar++;
        System.out.println("销毁了"+destroyVar+"次");
  }
  %>
  <%
    serviceVar++;
    System.out.println("请求了多少次"+serviceVar+"次");
    String content1 = "初始化的次数:"+initVar;
    String content2 = "请求的次数:"+serviceVar;
    String content3 = "销毁的次数:"+destroyVar;
  %>
  <h1>测试jsp的生命周期</h1>
  <p><%=content1%></p>
  <p><%=content2%></p>
  <p><%=content3%></p>
  </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老去的90后

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

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

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

打赏作者

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

抵扣说明:

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

余额充值