jsp和serverlet的差别
開始找工作面试的第一家公司,爱思创新 面试题:
1、jsp和serverlet的差别
简单来说:
jsp:是包括java程序片的html文件
servlet:是包括html的java文件
事实上说白了JSP和SERVLET究竟什么差别呢,JSP就象宾馆前台的服务员,要长的不错,让顾客一看就认为比較舒服,他主要就是负责显示这个宾馆的形象的.而SERVLET就象部门经理,要处理各种各样的业务和事情,而bean呢就象是高层领导了,他负责从部门经理处获得信息,报告给董事会,或者把董事会的建议和计划吩咐下去.他们分工合作,各干其职.
详细的看下以下吧.
JSP和SERVLET究竟在应用上有什么差别,非常多人搞不清楚。我来胡扯几句吧。简单的说,SUN首先发展出SERVLET,其功能比較强劲,体系设计也非常先进,仅仅是,它输出HTML语句还是採用了老的CGI方式,是一句一句输出,所以,编写和改动HTML非常不方便。
后来SUN推出了相似于ASP的镶嵌型的JSP,把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完毕。通过调用,实现整合。
为什么要採用这些组件技术呢?由于单纯的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。
但是,这不是说,学了SERVLET没用,实际上,你还是应该从SERVLET入门,再上JSP,再上JSP+BEAN。
强调的是:学了JSP,不会用JAVA BEAN并进行整合,等于没学。大家多花点力气在JSP+BEAN上。
在补充几句:
我们能够看到,当ASP+COM和JSP+BEAN都採用组件技术后,全部的组件都是先进行编译,并驻留内存,然后高速运行。所以,大家常常吹的SERVLET/JSP先编译驻内存后运行的速度优势就没有了。
反之,ASP+COM+IIS+NT紧密整合,应该会有较大的速度优势呈现。而且,ASP+COM+IIS+NT开发效率非常高,尽管BUG非常多。
那么,为什么还用JSP+BEAN?由于JAVA实在前途远大。微软分拆后,操作系统将群雄并起,应用软件的开发商必然要找一个通用开发语言进行开发,JAVA一统天下的时机就到了。假设微软分拆顺利,从中分出的应用软件公司将成为JAVA的新领导者。眼下的JAVA大头SUN和IBM都死气沉沉,令人失望。希望新公司能注入新活力。只是,新公司非常有可能和旧SUN展开JAVA标准大战,两方各自制定标准,影响JAVA夸平台。
另外,如今的机器速度越来越快,JAVA的速度劣势非常快就能够被克服。
jsp和serverlet的差别的更多相关文章
- JSP与HTML的差别
HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样解释性语言,为什么说是解释性 语言呢?由于.仅仅要你有一个浏览器那么它就能够正常显示 ...
- JSP/Servlet-----charset 、pageEncoding差别
一.JSP/Servlet中的几个编码的作用 在JSP/Servlet中有4个地方可设置编码(例如以下).当中前两个仅仅能用于JSP中,后两个可用于JSP和Servlet 中. ...
- java中的system.out.println()和JSP中out.println()差别
out.println()输出到client. 在out.println()中,out是response的实例.是以response为对象进行流输出的,即将内容输出到client.假设在JSP ...
- J2EE 13规范(4)-JSP
JSP全称(Java Server Page ),也称javaserver页面.看到jsp是否立马想到原先以前学过的asp呢. 一.jsp和asp的比較: JSP(Java Server Page)与 ...
- JSP 知识基本
from:http://blog.csdn.net/caipeichao2/article/details/38589293 more:http://www.2cto.com/kf/web/jsp/4 ...
- EL和JSTL专题
EL简介 EL全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言.当时只能在JSTL标签中使用,如下: <c:out value="${ ...
- 两种include方式及filter中的dispatcher解析
两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- jstl--->Core 核心标签库->URL操作
jstl--->Core 核心标签库->URL操作 -->import.param.URL.redirect <c:import>将静态或动态文件包含至本身jsp页面 而 ...
随机推荐
- c++的引用(二)
/*按地址传递*/ #include <iostream> using namespace std; void swap(int *a, int *b) { int c; c = *a; ...
- H-JATG:NAND_FLASH的参数设置
JATG:NAND_FLASH 不同的cpu同一款flash: 相同的cpu不同的flash: 相同的cpu不同厂家的的flash:
- 虚拟rethat联网问题
近日在vmware虚拟了一台rethat的linux,但是使用桥连也上不了网! 宿主机是win7,由于在公司,是采用固定ip上网的,通过上网查资料,终于可以连接网络了: 步骤如下: 第一:修改vi / ...
- javascript 学习随笔1
html部分 <body onload="message()"><!--主题部分加载就调用-->document.getElementById(" ...
- java基础之注解
包含成员变量及方法的注解称之为元数据, 不包含任何成员的注解称之为标记. 用@interface定义注解, 使用类似于接口方法的方式来定义注解的属性,其中返回值成为属性的类型,方法名为属性的名称. p ...
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...
- CocoaPods on Xcode 6 and Yosemite
老子今天又给环境跪了..... cocoapods 在升级完新系统以后无法工作 解决cocoapods 在 mac 10.10下报错 错误例如以下. /System/Library/Framework ...
- paip.输入法编程---输入法ATIaN历史记录 c823
paip.输入法编程---输入法ATIaN历史记录 c823 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csd ...
- 两个activity之间的数据传递
1.清单文件第二个activity<activity android:name="com.example.twodatapass.ResultActivity" androi ...
- android之View的启动过程
转自:http://www.cdtarena.com/gpx/201308/9607.html 程序里调用了onSizeChanged方法进行了一些设置,不知道onSizeChanged是在什么时候启 ...