jsp stc_为什么说jsp的本质是servlet?

我们知道,一个实现了servlet接口的java类被称为一个servlet,jsp实现了servlet接口,所以说jsp本质上是一个servlet

不过,jsp这个实现接口的方式隐藏得比较深,得从源码上才能看出,接下来将以一个简单例子说明。

1.首先我们从一个简单的javaweb的demo项目来看,jsp从内容来看更像一个html文件才对,这和servlet相差甚大

fc6a4ffa35e7961b27364450badbf89f.png

2.接着我们试着运行下这个demo项目

e8836b369d77fb8163bdf15056840e4e.png

3.我们打开idea的中的tomcat工作空间

c439ba5c09c621c719da093dce1cc6dd.png

4.打开work,点到底我们发现有两个index_jsp为前缀的文件,一个java文件,一个class文件,这个就是刚才demo项目中的index.jsp经过tomcat容器编译后的样子,我们打开java文件

0c21c33571b0a861a3fa6dc57e4ead41.png

4.点进去我们发现这个类继承了HttpJspBase

cddeb05029d6005d8b8713f2223ce437.png

5.我们打开HttpJspBase这个类的源码

c55026b7e70c32c8994ed5f8144c1105.png

6.到这里就很清楚了,HttpJspBase继承了HttpServlet,而HttpServlet继承了GenericServlet,GenericServlet类实现了servlet接口

58f810aed3fc74459353db15d8f47017.png

27fab301103e471fd9955c4bf9acdc3d.png

7.所以说jsp本质是一个servlet,这都是源码里写得清清楚楚的。接下来我们修改index.jsp的内容,定义一个java变量,并取出输出到页面

a7da93dd3849d522d938cd3814363192.png

bbd3bf0bc705cc098485e8fe2d3cf515.png

8.我们再打开index_jsp.java文件

我们看html部分的代码,这里的第一行代码设置了页面格式为html,这和在servlet中的设置是一样的,html代码部分jsp自动的使用了out.wirte()和out.print()来输出。

d17fb4e10656aed1a3b7aff647658dc2.png

9.所以jsp其实还是一个servlet,只不过它代替了人们以前在servlet中拼接html代码的工作,使得在开发中jsp只用专注于html代码的编写,由于html代码和java代码分离,也使维护起来更省力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值