jsp和servlet有什么区别

JSP简介

JSP是一种建立在Servlet规范功能之上的动态网页技术。和ASP类似,它们都是在通常的网页文件中嵌入脚本代码,用于产生动态内容,不过JSP文件中嵌入的是Java代码和JSP标记。

JSP文件在用户第一次请求时,会被编译成Servlet,然后再由这个Servlet处理用户的请求,所以JSP也可以看成是运行时的Servlet。既然JSP也是Servlet,那么我们为什么还要使用JSP呢?或者说JSP和Servlet的区别是什么呢?

— Servlet是Java对CGI的回应。它们在服务器上执行和解释浏览器的请求,承担客户端和其他应用程序之间的中间层的角色。Servlet主要是把动态的内容混合到静态的内容中以产生HTML。

— JSP页面在HTML元素中嵌入Java脚本代码和JSP标记,使得文件长度变短,格式更加清晰。另一方面,JSP把静态和动态的内容分离开来,实现了内容和表示的分离。

— 使用JSP,不需要单独配置每一个文件,只要扩展名是.jsp,JSP容器(也是Servlet容器)就会自动识别,将其转换为Servlet为客户端服务。术语Web容器和JSP容器是同义的

JSP的运行机制

我们先来看一个简单的JSP文件:

<html>

<head><title>Hello</title></head>

<body>

<%

out.println(“Hello World!”);

%>

</body>

</html>

这个JSP页面向客户端输出“Hello World!”。我们把这个页面复制到%CATALINA_ HOME%webappsROOT目录下,启动Tomcat,打开浏览器,在地址栏中输入***apachejsp目录下,可以看到两个文件:“hello_jsp.java”和“hello_jsp.class”,这两个文件就是在我们访问hello.jsp文件时,由JSP容器生成的,整个过程如下图所示。



JSP文件的指定过程

JSP容器管理JSP页面生命周期的两个阶段:转换阶段(translation phase)和执行阶段(execution phase)。当有一个对JSP页面的客户请求到来时,JSP容器检验JSP页面的语法是否正确,将JSP页面转换为Servlet源文件,然后调用javac工具类编译Servlet源文件生成字节码文件,这一阶段是转换阶段。接下来,Servlet容器加载转换后的Servlet类,实例化一个对象处理客户端的请求,在请求处理完成后,响应对象被JSP容器接收,容器将HTML格式的响应信息发送到客户端,这一阶段是执行阶段。

从整个过程中我们可以知道,当第一次加载JSP页面时,因为要将JSP文件转换为Servlet类,所以响应速度较慢。当再次请求时,JSP容器就会直接执行第一次请求时产生的Servlet,而不会再重新转换JSP文件,所以其执行速度和原始的Servlet执行速度几乎就相同了。在JSP执行期间,JSP容器会检查JSP文件,看是否有更新或修改。如果有更新或修改,JSP容器会再次编译JSP或Servlet;如果没有更新或修改,就直接执行前面产生的Servlet,这也是JSP相对于Servlet的好处之一。

JSP容器在后台针对hello.jsp生成的Servlet源文件中有如下代码:

public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase{…}

HttpJspBase类是Tomcat提供的实现了HttpJspPage接口的类,而HttpJspPage接口继承自javax.servlet.jsp.JspPage接口(JSP 规范中定义,JSP页面转换后的Servlet类必须实现JspPage接口),JspPage接口又继承自javax.servlet.Servlet接口。

结论:JSP本质上还是Servlet。

Jsp是一种动态网页开发技术,它使用Jsp标签在HTML网页中插入Java代码。标签通常以<%开头,以%>结束。Jsp标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。Jsp本质上是Servlet的一种简易形式,Jsp经编译后就变成了Servlet,是Servlet的扩展。由于jvm只能识别Java类,不能识别Jsp代码,Web容器会将Jsp的代码编译成jvm能够识别的Java类,然后再由Servlet负责响应用户请求。

Servlet是一种服务器端的Java应用程序,它运行于服务器的jvm中,由Web容器加载和管理,用于生成动态Web内容,负责处理客户端请求,能够依靠服务器的支持向浏览器提供显示内容。在数通畅联AEAI DP开发平台的交互机制中,就是通过DispatchServlet来响应浏览器上请求,再调用对应Handler中的prepareDisplay方法,然后查询对应的信息放到PageBean中,最后将PageBean放到request中转发到Jsp页面来显示结果集。

Servlet和Jsp的区别:

  1. Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML中分离开来;而Jsp是Java和HTML组合成一个扩展名为.jsp的文件。
  2. Jsp侧重于视图,Servlet更侧重于控制逻辑,在MVC架构模式中,Jsp适合充当视图(view)而Servlet适合充当控制器(controller)。
  3. Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。

原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/9658.html

(0)
上一篇 2023-04-17 上午10:00
下一篇 2023-04-17 上午10:29

相关推荐

  • ui设计师就业前景

    操作方法 01 一、产品型的ui设计师 懂ue、会看数据、懂用户体验并且懂产品,能够把需求实现所有设计稿给开发是对于一位产品型的ui设计师的基本具备的能力要求。 02 在小型创业公…

    培训问答 2022-06-30
  • 少儿英语终生学习习惯如何养成

    公众号:现代教育中心(ID:neoelite) 少儿英语的清华北大,专注少儿英语教育14年;指导家长帮助孩子更好学习英语;定期为孩子们免费指导英语口语发音;帮孩子养成每日学习英语的…

    培训问答 2022-08-19
  • 发型设计培训学校,请问义乌哪里的发型设计比较好啊?我要做头发?

    义乌哪里的发型设计比较好啊我要做头发 美度,阿光,七加.夜巴黎.明媚苑,凯莎.还有很多!最后还有遍地开花的魅力之星.  如果你不计较价格,推荐美度 在商贸区 4发型设计专业有哪些院…

    培训问答 2022-04-10
  • 卤菜配方,卤菜用哪种配料好吃又香

    卤菜分为:白,红,辣三卤,那种配料好,看当地的口味而做,下面我给大家分为一下做参考。 制作出一款好的卤菜产品,卤水与香料的精确比例非常关键,根据不同的卤制食材所添加的香料比例也是不…

    培训问答 2022-11-15
  • 讲话紧张,一说话就紧张怎么办

    很多时候,内向者没有表达的愿望,他们宁愿在自己的小天地里思考一些事、琢磨一些人,都不想与任何人分享心中的想法。久而久之,这种独立思考的习惯就形成自然,他们认为这样做没什么不好,可是…

    培训问答 2022-09-02
  • 在南京,如何拓展招标代理业务工作

    2007年起,江苏省建筑业总产值连续15年保持全国第一。其中,省会南京完成的产值一直在设区市中名列前茅。在2020年,南京市还以在国内41个省会、副省级等城市中排名第三的优势,被发…

    培训问答 2023-02-08
  • 什么是感恩节

    这是一个关于感恩节的视频,希望可以帮助到你! 【T教授说】 其实,感恩节是美国人独创的一个节日,后来这个节日也被传到了加拿大; 现在世界上,埃及、希腊等国家也有独特的感恩节,不过英…

    培训问答 2023-06-18
  • 普通话培训,贫困户普通话培训教案

    在给贫困户培训普通话的时候,是需要考虑很多问题的,比如年龄、性别等等,接下来我就针对这些问题来说一说自己的一些看法。 首先,要想给贫困户进行普通话,培训的话首先要和他们多进行交流沟…

    培训问答 2022-06-11
  • 成都肚皮舞培训,成都哪里有靠谱的会计培训

    一、成都六要素会计培训中心 成都六要素会计培训中心录属于成都六要素财务管理有限公司,是公司的一个专注于会计考试辅导的权威品牌,认准官方地址,方可获得优质财大名师课程。 成都六要素会…

    培训问答 2022-04-24
  • 重庆远景,重庆市轨道交通远景规划

    可以在网上收到很多关于涪陵修建轻轨的新闻,连百度百科都有,具体说是为了使涪陵老城和李渡新区连接更为紧密,交通更便捷,计划在两个地区之间搭建轨道交通。按照计划,将于2015年10月启…

    培训问答 2022-05-04