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和servlet有什么区别图1

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页面来显示结果集。

jsp和servlet有什么区别图2

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

相关推荐

  • 中医培训,一个中医爱好者十年的自学中医门径

    这是中医黑误导宣传,中医中药发展进步很快,中医是世界上最强有力的替代常规医疗体系,世界上其他医疗体系早灭亡的,可中医中药强势崛起,药店中药占居80%以上份额,且都是中药方剂,人们生…

    培训问答 2022-08-28
  • 职业培训师

    从事培训工作近十年,听过很多职业培训师授课,今天不讲术,只从道的方面谈谈我的看法: 1、关注企业的真实需求。企业邀请职业讲师为公司员工授课,一定是想通过培训解决问题的,学员都是成年…

    培训问答 2022-08-26
  • 搜索引擎优化培训,企业如何进行搜索引擎优化

    我们是专业网站推广的,可以给你些建议。 首先你得有一个独立的网站。如果是企业类型,网站是新注册的域名,建议你再购买一个老域名(有权重的更好)进行绑定,这样收录会和排名都会更快些。现…

    培训问答 2022-12-15
  • 长春学英语,长春上学去幼儿园

    那是不可能的。不要说长春市,全中国包括港澳台都没有这么一个地方。 首先一点,孩子无益于这么小就开始学习英语。此外,如果孩子的父母不是双语父母,这种努力通常最后还是徒劳的。第三,如果…

    培训问答 2022-08-30
  • 常春藤如何栽培(常春藤应该如何进行栽培)

    常春藤这种植物不用和大家说,相信很多花友也都知道它是常绿的,那平时在公园里见到它的机会也是非常多的,它凭着它常绿的叶子俘获了很多花友的心,那这种植物如果移栽回家应该怎么样去栽培呢,…

    2023-02-07
  • 淘宝上卖的博美茶杯犬是真的吗

    这个价格不用想都知道肯定不正常!50元差不多只够去农村抱只土狗的幼崽,不可能够买到品种犬的。品种犬价格一般都是几百到几千不等,品相好血统纯正的品种犬万元起步也是正常不过的事情,所以…

    2022-10-26
  • 国地税合并给企业带来了哪些影响

    原国地税分家是分税制下的财政管理模式。目的是为了划分中央和地方的收入。中央地方各拿各钱,各干各事。原来只有上海是国地税一体的,新疆只有国税没有地税。 如:以前营业稅属于地方稅,个人…

    培训问答 2023-03-08
  • 抖音为什么没有播放量呢

    辛苦拍一天,一共两个赞,我的内容为啥就没人看? 我们首先理解一下,标签的感念。 抖音的推荐机制是机器算fa(这个是消极敏X词),也就是说,它根本不知道你是长成了迪丽热巴,还是像块糯…

    2023-05-12
  • 为什么老师会讲课

    你这个说法其实是并不准确的,不是所有老师都会讲课。中国的老师来源有很多种,主流的是各级师范类学校,这类老师经过专业的培训,学习各种教学方法、教学技巧,并且经过大量实习实践,又学习了…

    培训问答 2023-05-19
  • 会计零基础的人能做会计吗

    就这么跟你说吧,身边很多同事大学学的偏理科或很偏的专业,例如学医、学的核物理之类的,由于毕业以后,社会上对口工作岗位的供给很有限,去自学的会计,而且还报考了注册会计师考试,强悍的3…

    2023-04-05