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

相关推荐

  • 公务员面试网课推荐

    面试课可以选择一个答题内容方面的课+一个实战演练的课。 答题内容方面我当时用的是原聪面试课,在真题练习之前先把这个过了一遍。 我当时准备面试的时候有很多人说,面试就是要不断练习,你…

    培训问答 2023-06-24
  • 重庆中学生,重庆学生中毒事件

    何以解忧唯有我来! 首先死者为大,人既已死说什么都是无济于事,天堂没有让你们事崩溃的事情了!惟愿两小姑凉一路走好! 言语归正传 人既已死,事件还在,大人尚且没好好看完世界,两个小女…

    培训问答 2023-03-02
  • 食疗养生师,春季如何食疗养生

    俗话说:“一夏无病三分虚”,秋天一到,正是补身养神储藏过冬养分的时分。在民间素有“秋补”风俗。很多人一传闻要进补立刻不分三七二十一,只挑贵的食物、药品吃,这种做法是极不科学的,不只…

    培训问答 2022-05-25
  • 维生B起什么作用

    维生素B1的生理功能是能增进食欲,维持神经正常活动等。维生素B1在体内转变成硫胺素焦磷酸(又称辅羧化酶),参与糖在体内的代谢,因此维生素B1缺乏时,糖在组织内的氧化受到影响。另外,…

    培训问答 2023-05-25
  • it培训班有用吗

    您好,对于您说的是IT培训是应该报全日制班还是周末班,与你分享如下个人观点,希望对你有所帮助。国内目前的IT培训机构有很多,基本都有周末班和脱产班。至于是要报脱产班还是周末班,个人…

    培训问答 2022-05-30
  • solidworks怎么三维建模

    SolidWorks三维建模软件以其易学易用的特点已经得以广泛应用。学习SolidWorks三维建模软件对于机械设计人员来说,并不是十分困难的事情。 学习SolidWorks建模软…

    培训问答 2022-11-03
  • 服装行业该何去何从

    服装产业作为我国国民经济的传统支柱产业,极大地推动了国民经济的发展。但行业发展的同时,也面临着传统经营生产理念与更新换代的市场行情不相容的尴尬境地。倒闭潮现象也随之一涌而出,波司登…

    培训问答 2022-11-11
  • 学校的日语,哪个学校的日语专业强

    日语专业比较好的高校。全国大学日语教材由北京外国语大学。吉林大学。大连外国语大学。上海外国语大学。清华大学。北京大学黑龙江大学。山东大学。北京师范大学。等高校编写的。这些学校都不错…

    培训问答 2022-11-01
  • 如何提高记忆力,如何提高记忆力过目不忘

    记忆是一个普遍的心理现象,人们的一切心理发展和智慧活动都有赖于记忆。如何提高记忆效果呢?首先要了解影响记忆的因素;其次要摸清影响记忆的对立面–遗忘的因素,然后才能有针对…

    培训问答 2023-07-23
  • 成都电子科技大学网络教育学院

    首先回答您的问题,电子科技大学和电子科技大学成都学院没有任何关系。 四川电子科技大学的正确名称叫电子科技大学,985、211工程建设高校、世界双一流大学和双一流学科建设高校,是响当…

    培训问答 2022-06-28