之前的文章里有说过,其实Servlet比JSP出现的早,JSP的本质就是Servlet,但是一个是jsp页面,一个是java类,硬要说他们的本质是一样的,搁谁都有点难以置信。后面的结论会更加让你吃惊。

首先,我们来说JSP的运行过程。

  如果用户第一次访问某个页面jsp---->编译为java文件---->翻译为字节码文件---->生成静态页面html等。那我们来验证到底是不是这样一个过程。以下是我实际实验的过程:首先找到tomcat服务器的work目录,清空,保证没有残余文件干扰实验-->给服务器发送一个请求促使jsp页面编译,翻译-->在回到work目录,看是否真的多了java.class文件-->最后打开java文件与Servlet对比,看二者是否相同。

【实验过程:】

Tomcat的目录中有一个work目录,这里面存放的就是jsp文件在被访问的时候翻译和编译的.java文件和.class文件。如下图

我们以web01为例子,这时我写的一个小小的人员管理网站DEMO。具有人员注册,登陆,增删改查,排序等功能,首先清空该目录下的文件

然后在浏览器中访问web01

在去服务器上看web01目录               多出两个文件,分别是编译的java文件和字节码文件.class

我们打开这个java文件看一看。发现这个java类中引入了Servlet需实现的javax.servlet.*;并且,和Servlet有相似的inti,destroy,service方法。可见,这个类正是一个Servlet,只是表现的比较不像Servlet,更多的二者关系,需要进一步探索,有知道更多信息的也可以留言给我

结论:

经过此次实践分析,得出以下结论,如有不妥请不吝留言赐教!

(1)Servlet和JSP的确本质都是Servlet类

(2)tomcat服务器说白了就是Servlet容器,并不能直接运行jsp页面,只是将其翻译为可执行的类了

(3)jsp能实现的,用Servlet都可以实现,两者功能相同。

JSP与Servlet的关系的更多相关文章

  1. 图解JSP与Servlet的关系

      Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet, ...

  2. jsp和servlet的关系

    JSP是Servlet技术的扩展,本质上就是Servlet的简易方式.JSP编译后是“类servlet”. Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完 ...

  3. java Web jsp和servlet的关系

    JSP在本质上就是SERVLET,但是两者的创建方式不一样Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不直观JSP由HTML代码和JSP标签构 ...

  4. JSP 与 Servlet 的关系

    以下摘自维基百科: Java服务器页面(JSP)是HttpServlet的扩展.由于HttpServlet大多是用来响应HTTP请求,并返回Web页面(例如HTML.XML),所以不可避免地,在编写s ...

  5. jsp与servlet(转)

    一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...

  6. JSP与Servlet之间的关系事例说明

    Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器.Servlet 运行在 Servlet 容器中, ...

  7. Jsp和Servlet关系

    为什么会出现Jsp? 其实对于服务器来说它只认识Servlet,我们完全可以在Servlet用resp.getWriter().write("");画出网页的界面,但是仅仅一个很简 ...

  8. tomcat和servlet的关系

    一.什么是servlet? 处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西.理解这个的前提是了解一些http协议的东西,并且知道 ...

  9. JSP+JavaBean+Servlet技术(MVC模型)

    一,Servlet开发用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种 ...

随机推荐

  1. vue项目锚点的使用

    在vue项目中如何使用锚点呢? 在vue-router中定义 scrollBehavior scrollBehavior (to, from, savedPosition) { if (savedPo ...

  2. eclipse invalid zip archive lib

    eclipse invalid zip archive lib 修改.class文件的编译内容.删除license或找到相应的jar包,放到lib下面,重新编译.

  3. Sprite/MovieClip的Enter_Frame事件,不受addChild/removeChild影响

    简单点讲:Sprite或MovieClip对象一旦为其添加了Enter_Frame事件监听,对应的Enter_Frame处理函数将会马上被调用,并一直执行下去(不管你是否将其addChild到显示列表 ...

  4. @ControllerAdvice详解

    @ControllerAdvice,是Spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@ControllerAdvice的实现:   package org.spri ...

  5. FPGA_VHDL 学习课堂笔记001

    FPGA_VHDL 学习课堂笔记   记录说明:本文档主要记录大学期间,老师FPGA授课课堂笔记. 代码语言:VHDL 编程软件:MAX+plus II FPGA硬件:FLE-843   03月05日 ...

  6. Linux-02

    Linux命令 命令格式:命令  [-选项]  [参数] 例如: ls -la /etc 说明:1)个别命令使用不遵循此格式 2)当有多个选项时,可以写在一起 3)简化选项与完整选项-a等于--all

  7. <a>超链接用作下载

    在a标签里添加  download=""  ,“ ”里面的内容可随意写,比如文件名. <a href="/download/武林秘籍.pdf" downl ...

  8. Wordpress 后台更改网址

    在 `wp_options` 数据库执行下面两条命令 ```sql update wp_options set option_value = 'your_new_url' where option_n ...

  9. LeetCode解题录-1~50

    [leetcode]1. Two Sum两数之和 Two Pointers, HashMap Easy [leetcode]2. Add Two Numbers两数相加 Math, LinkedLis ...

  10. IDEA cannot resolve symbol “xxxx”

    有缓存 多试两次就可以了. 技术交流群:816227112