问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中JSP和Servlet的区别?

发布网友 发布时间:2022-04-30 10:41

我来回答

4个回答

热心网友 时间:2022-04-11 07:55

一. Servlet是什么?
客户机/服务器计算的发展。Java提供了一整套客户机/服务器解决方案,在这个方案中,程序可以自动地下载到客户端并执行,这就是applet。但是它仅仅是问题的一半。问题的另一半就是Servlet。
servlet可以被认为是服务器端的applet。servlet被Web服务器加载和执行,就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求,执行某种作业,然后返回结果。使用servlet的基本流程如下:
·客户端通过HTTP提出请求.
·Web服务器接收该请求并将其发给servlet。如果这个servlet尚未被加载,Web服务器将把它加载到Java虚拟机并且执行它。
·servlet将接收该HTTP请求并执行某种处理。
·servlet将向Web服务器返回应答。
·Web服务器将从servlet收到的应答发送给客户端。
由于servlet是在服务器上执行,通常与applet相关的安全性的问题并不需实现。要注意的是Web浏览器并不直接和servlet通信,servlet是由Web服务器加载和执行的。
而servlet是用Java编写的,所以它们一开始就是平台无关的。这样,Java编写一次就可以在任何平台运行(write once,run anywhere)的承诺就同样可以在服务器上实现了。servlet还有一些CGI脚本所不具备的独特优点: (本人对CGI并不是十分了解,所以这些特点不能完全的体会到,这也是摘自论坛的贴子,请见谅)
servlet是持久的。servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)。与之相反,CGI脚本是短暂的、瞬态的。每一次对CGI脚本的请求,都会使Web服务器加载并执行该脚本。一旦这个CGI脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。CGI脚本的每一次使用,都会造成程序初始化过程(例如连接数据库)的重复执行。
servlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。
servlet是可扩展的。由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。
servlet是安全的。从外界调用一个servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。
   setvlet可以在多种多样的客户机上使用。由于servlet是用Java编写的,所以你可以很方便地在HTML中使用它们,就像你使用applet一样。
那么,Servlet是怎样执行的?怎样来写一个Servlet,它的基本架构是怎么样的?
这些问题,将在后面部分给予介绍。
二.JSP与Servlet
现在已经对Servlet有了大概的了解,现在我们就来说说JSP和Servlet的关系。
JSP是一种脚本语言,包装了Java Servlet系统的界面,简化了Java和Servlet的使用难度,同时通过扩展JSP标签(TAG)提供了网页动态执行的能力。尽管如此,JSP仍没有超出Java和Servlet的范围,不仅JSP页面上可以直接写Java代码,而且JSP是先被译成Servlet之后才实际运行的。JSP在服务器上执行,并将执行结果输出到客户端浏览器,我们可以说基本上与浏览器无关。它是与JavaScript不同的,JavaScript是在客户端的脚本语言,在客户端执行,与服务器无关。 那么JSP是什么?就是Servlet.
JSP与Servlet之间的主要差异在于,JSP提供了一套简单的标签,和HTML融合的比较好,可以使不了解Servlet的人可以做出动态网页来。对于Java语言不熟悉的人(比如像我),会觉得JSP开发比较方便。JSP修改后可以立即看到结果,不需要手工编译,JSP引擎会来做这些工作;而Servelt缺需要编译,重新启动Servlet引擎等一系列动作。但是在JSP中,HTML与程序代码混杂在一起,而Servlet却不是这样。也许大家比较混乱了,那么Servlet又是什么?下面我们对JSP的运行来做一个简单的介绍,告诉大家怎样来执行一个JSP文件:
当Web服务器(或Servlet引擎,应用服务器)支持JSP引擎时,JSP引擎会照着JSP的语法,将JSP文件转换成Servlet代码源文件,接着Servlet会被编译成Java可执行字节码(bytecode),并以一般的Servlet方式载入执行
JSP语法简单,可以方便的嵌入HTML之中,很容易加入动态的部分,方便的输出HTML。在Servlet中输出HTML缺需要调用特定的方法,对于引号之类的字符也要做特殊的处理,加在复杂的HTML页面中作为动态部分,比起JSP来说是比较困难的。
除去了转换和编译阶段,JSP和Servlet之间的区别实在是不大。
JSP引擎通常架构在Servlet引擎之上,本身就是一个Servlet,把JSP文件转译成Servlet源代码,再调用Java编译器,编译成Servlet。这也是JSP在第一次调用时速度比较慢的原因,在第一次编译之后,JSP与Servlet速度相同.下面我们来看看为什么他们在第一次编译后再编译的速度相同:
在整个运行过程中,JSP引擎会检查编译好的JSP(以Servlet形式存在)是否比原始的JSP文件还新,如果是,JSP引擎不会编译;如果不是,表示JSP文件比较新,就会重新执行转译与编译的过程。
为了有个深刻的了解,我们看一下JSP的运行和开发环境:
浏览器:常见的浏览器有IE和Netscape两种。
数据库:常用的数据库有Oracle,SQL Server,Informix,DB2,Sybase,Access,MySQL等。
操作系统:常见的有Windows,Linux,以及各种Unix系统。
Web服务器:常见的有IIS,Apache,Netscape Enterprise Server等。
JSP引擎:一般JSP引擎都以Servlet引擎为基础,并以Servlet的形式出现。同时,在各种免费和商业引擎的实现中,Servlet引擎和Jsp引擎通常也是一起出现,我们成为Servlet/JSP引擎,或从某种成为JSP引擎。
JSP引擎是可以提供JSP和Servlet运行支持并对其生存周期进行管理的系统级实体。
在JSP页面第一次被请求时,JSP引擎会将JSP原始文件转换成Servlet源代码,然后调用Java编译器,编译成Servlet,并在Servlet引擎中执行。当再次有请求的时候,JSP引擎会见差异编译好的JSP是否比原来的JSP原始文件要新,如果是,运行Servlet;如果不是,表示文件已经更新的了,就会从新执行转换和编译的过程。
说到这里,也基本把JSP和Servlet的关系说清楚了,从我的感觉上看用JSP就可以了,简单又方便,又可以和Bean 很好的兼容使用,功能又很强大,为什么又出现了Servlet,它又有什么用?何况它的编写又相对复杂。为了把问题说得更清楚一点,我想在这里说一下历史,顺便再讲一下为什么还要用Servlet,Servlet的好处是什么。
历史简述:(摘自某论坛有删节,改写)
简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。
后来SUN推出了类似于ASP的镶嵌型的JSP(是Servlet发展的产物),把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如ASP,PHP,JSP都是镶嵌型的SCRIPT语言。
从网络三层结构的角度看,一个网络项目最少分三层:data layer,business layer, presentation layer。当然也可以更复杂。SERVLET用来写business layer是很强大的,但是对于写presentation layer就很不方便。JSP则主要是为了方便写presentation layer而设计的。当然也可以写business layer。写惯了ASP,PHP,CGI的朋友,经常会不自觉的把presentation layer和business layer混在一起。把数据库处理信息放到JSP中,其实,它应该放在business layer中。
根据SUN自己的推荐,JSP中应该仅仅存放与presentation layer有关的内容,也就是说,只放输出HTML网页的部份。而所有的数据计算,数据分析,数据库联结处理,统统是属于business layer,应该放在JAVA BEANS中。通过JSP调用JAVA BEANS,实现两层的整合。
实际上,微软推出的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的presentation layer由ASP完成,所有的business layer由COM/DCOM完成。通过调用,实现整合。现在微软推出的.NET也是通过这个理念,所有的presentation layer由ASP.NET完成,business layer由C#或VB.NET或VC.NET来完成。
为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。
另外一方面,纯SCRIPT语言将presentation layer和business layer混在一起,造成修改不方便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页CODE,采用组件技术就只改组件就可以了。
综上所述,SERVLET是一个早期的不完善的产品,写business layer很好,写presentation layer就很不好,并且两层混杂,显得十分混乱。
所以,推出JSP+BAEN,用JSP写presentation layer,用BAEN写business layer。SUN自己的意思也是将来用JSP替代SERVLET。
看了上面的叙述,大家可能对JSP与Servlet共存有了比较好的认识。可以看到JSP和Bean结合后的的实用性,强大的表现功能,易用性都是Servlet所不能及的。那么是不是Servlet就被取代了?不是!在以后的发展中,它还是有着巨大的作用的。上面只不过是将了问题的一方面,下面我们来看看Servlet本身的特点。
由于它是由java来写的,所以相关的特点我们就不说了,上文已经有了详细的介绍,我们来看看其他的:
Servlet是用于开发服务器端应用程序的一种编程模型,如果只是一个普通的java应用,可以不使用servlet来编写,但是如果想要提供基于web的服务能力,那么就必须按照这种模型来编写,而且servlet也必须允许在符合servlet规范的java web server or app server之上,否则无法运行。除非你自己实现一个web server,但是其复杂度是比较高的,特别是在企业级应用中,对系统的稳定性和健壮性都要求比较高,所以servlet的模型实际上是简化了编写稳健的服务器端的应用开发过程。Servlet 可以作为提供web服务能力的一个接入方式
现在也许可以理解了什么是Servlet什么是JSP,它们之间的关系是怎样的。

热心网友 时间:2022-04-11 09:13

1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.
Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

热心网友 时间:2022-04-11 10:47

jsp负责前台显示,相当于view,servlet负责逻辑,相当于controller

热心网友 时间:2022-04-11 12:39

一楼太伟大了,佩服,jsp可以说是servlet2因为jsp运行机制就是将jsp页转换成servlet当你运行时可以在tomcat中找到对应的jsp名加_名。生成的java文件。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我想问下,物理化学专业纳米技术方向就业前景如何,我的一个朋友现在是... 考研化学,哪个方向最好 在化学方面的物理化学催化和物理化学的纳米材料那个好就业,那个工资比 ... 山东联通的沃玩家里面的魔法币有什么用? 联通沃玩家魔法币换500m几点兑换 派出所出具行政处罚决定后到法院起诉可以吗 哪个牌子的隐形眼镜舒服 我带过博士伦和艾爵的 想换半年抛的 推荐下... 俩人打架后起诉到法院,还需要派出所开行政处罚书吗? 为什么不建议6 岁以下的幼儿吃止咳药呢? 儿童止咳药喝多了有什么后果 请问什么叫做精选个股? JSP和Servlet是用来做什么的? 在jsp页面怎么访问servlet中的方法 金矿选矿中精选,粗选是什么意思 JSP传递值给servlet的方式 什么是servlet?什么是jsp 优质精选是什么意思 jsp怎么调用servlet 最右 作品被选为精选是什么意思 最右里面发的跟拍老是被选为精选,是什么意思啊? 通过JSP 页面调用servlet方法? 优选,精选和臻选有什么不同? JSP和servlet的关系是什么? 女孩节精选什么意思 jsp与servlet的区别? 红酒精选和优选有什么区别 精选和严选有什么区别? 绿色毛衣外套配什么颜色围巾 如图 搭配原则的话,墨绿色的服装应该搭配什么样色的围巾 你好 请问一下 墨绿色羊绒大衣配什么颜色围巾好看 241279.4打印纸怎么设置连续打印 jsp和servlet的区别 为什么说jsp就是servlet 西游记精选本啥意思? Servlet与JSP有什么区别? JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? servlet和jsp之间的关系 什么样的男人会有大财富 描述JSP和Servlet的区别、共同点、各自应用的范围 保险公司年会贺词大全 保险公司中秋节贺词 星相学中六府是什么? 带田字的店名 帮忙想一个公司名字 带田字旁的一个字加一个阳 或者清 的外贸公司名字 公司经营运动器材 新华保险工作室开业贺词 汽车配件 产品起名字 花店名字带田字? 求文档: 请问在田字前面加个带三点水的什么字做防盗门公司的名字好点,谢谢 艾灸仪加热对人体有害吗?会不会有辐射? 网络公司起名 田字开头两个字的名字