当前位置:首页 > 标签
SpringBoot 14 Spring 2 SpringMVC 3 MyBatis 2 Linux 4 阿里云 13 宝塔 1 Docker 3 ElasticSearch 2 Redis 4 Shiro 0 Dubbo 0 Swagger 0 Thymeleaf 6 数据库 11 MySQL 11 外键 2 Gradle 1 Test 0 Tomcat 1 JavaWeb 7 Ajax 1 注解 3 css 2 报错 3 多数据源 1 Java基础 1 源码 2 Servlet 1 JSP 1 环境搭建 8 RabbitMQ 1 七牛云 1 Edit.md 1 图像识别 4 英语 2 Zookeeper 1JSP运行原理分析
- 2020-04-24
- 160
- JavaWeb
JSP的全名是 Java Server Page,它可以在传统的的HTML文件中插入Java程序段。
正是由于这个特性,在早期的JavaWeb开发中,JSP几乎是神一样的存在。
今天我们就来分析一下JSP的运行原理,以及JSP到底是什么
### JSP是什么
先抛出结论:JSP就是一个Servlet
需要解释这个的从JSP的工作原理开发分析
### JSP工作原理
#### 将JSP翻译成java文件
当我们在IDE中创建一个JSP文件之后第一次被访问时,Web容器就会将我们写的JSP文件翻译成为一个 .java 文件以及对应的 .class 文件
如下图所示,我在 web 目录下面创建了一个 test.jsp 文件

第一次访问之后,我们可以看到在 `C:\Users\用户名\.IntelliJIdea2019.3\system\tomcat\工程名称\work\Catalina\localhost\工程名册\org\apache\jsp`
里面,生成了下面 2 个文件:

这 2 个文件就是翻译而成的java文件。
#### 翻译成的Java文件就是Servlet
**要想找到这几个类,需要导入tomcat里面的jar包
**
点进这个生成的Java文件里面,这里类开头是这样的

再来看看 HttpJspBase,重要发现这个类就是继承了 HTTPServlet

**而我们生成的 java 类,继承了 HttpJspBase,所以说生成的 Java 类就是Servlet**
#### 生成的Java类干了什么
在这个生成的 Java 类里面,主要干了2件事
- 将 jsp 页面的各种html标签通过流的方式输出

- 定义了一些内置对象,这些对象我们就可以在jsp页面中使用
