A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

3 个回复

正序浏览
Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。


如图所示,Java提供一系列接口类(所谓接口类就是类中所有方法只提供方法声明,不提供任何的方法实现,这些类的实现就留给后继者去做。):Servlet、ServletConfig、Serializable,然后通过多重继承产生一个最通用的Servlet实现类(图中Gerneric Servlet类),接下来,通过一个多重继承与实现,产生一个新的实现类HttpServlet,用户在开发Servlet程序时只需继承这个类,从而产生一个自己的类(图中Hello_Servlet类),然后根据实际开发功能与信息处理需要,去实现该类中的相关方法即可。这就是前面提到的按照Servlet规范编写一个Java类,从而编写一个Servlet。
至于JSP(JavaServlet Page)从图中可以看出,实际上它也是从Servlet继承而来。只不过它在Servlet当中又添加/修改了一些方法,作了新的封装。具体到Tomcat Web应用服务器中,它通过一个多重继承,分别从Java的HttpJspPage和HttpServlet两个类那里继承和实现一些方法,然后封装一个叫做HttpJspBase的类从而实现了一个通用化的JSP类,用户在开发自己的JSP时,只需要从HttpJspBase继承一个自己的类(如图中Hello_jsp类),然后根据需要去实现相应的方法即可。
因此这也是为什么JSP的代码中总是闪现Servlet代码框架影子的原因,其实它们只是为实现同样的功能而进行了不同封装的组件而已,血脉里留着的是一样的血。
“既生瑜何生亮?”呵呵,因为JSP确实比Servlet要更胜一筹,所谓“青出于蓝胜于蓝”,既然Sun公司要在Servlet基础上推出JSP技术,那肯定是因为JSP有它更高明的地方。
使用Servlet产生动态网页,需要在代码中打印输出很多HTML的标签,此外,在Servlet中,我们不得不将静态现实的内容和动态产生内容的代码混合在一起。使用Servlet开发动态网页,程序员和网页编辑人员将无法一起工作,因为网页编辑人员不了解Java语言,无法修改Servlet代码,而Java程序员可能也不是很了解网页编辑人员的意图,以至于无法修改和实现网页功能。为了解决这些问题,Sun公司就推出了JSP技术。

0_1295883647csC2.gif (55.59 KB, 下载次数: 180)

0_1295883647csC2.gif

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 很给力!

查看全部评分

回复 使用道具 举报
首先JSP和Servlet都可以用来做网页页面,运行的时候 都会编译成.class文件,这些文件会存在tomcat的\work\Catalina\localhost\
文件夹底下 2者可以互相转换,可以说Servlet是早期的JSP,他们没有不同的地方 只是为了方便 一般用JSP来显示页面,用Servlet来控制页面间的跳转
回复 使用道具 举报
jsp就servlet的儿子,以前jsp没有出来之前,用到都是servlet。但是编程人员发现了一个问题,那就是servlet中有很多打印输出语句,而且在页面美化的时候,又要额外的添加语句,这就需要,开发人员既要有变成的功底,又要有美化的功底。这样做非常麻烦。后来人们发明了jsp,它的作用是可以将java代码,与html标签,或者美化页面用的标记隔离开来。方便编程人员与美工分开工作。jsp仅仅是servlet的改进,如果有大量业务逻辑的时候,就应该将业务逻辑放在servlet中,而不是jsp中。虽然jsp中也能处理业务逻辑,但是这样会使得页面变得臃肿不堪。
所以servlet用与处理业务逻辑(常用于)
jsp(常用于输出相关数据)

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马