`
T240178168
  • 浏览: 368030 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JSP和SERVLET区别

    博客分类:
  • java
阅读更多
                                      
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的速度劣势很快就可以被克服。

什么是Servlet?
一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。Java Servlet技术为这些应用程序定义了一个特定于HTTP的 servlet类。

javax.servlet和javax.servlet.http包为编写servlet提供了接口和类。所有的servlet都必须实现Servlet接口,该接口定义了生命周期方法。

Servlet的生命周期
一个servlet的生命周期由部署servlet的容器来控制。当一个请求映射到一个servlet时,该容器执行下列步骤。

1.     如果一个servlet的实例并不存在,Web容器

a.   加载servlet类。

b.   创建一个servlet类的实例。

c.   调用init初始化servlet实例。该初始化过程将在初始化servlet中讲述。

2.     调用service方法,传递一个请求和响应对象。服务方法将在编写服务方法中讲述。

如果该容器要移除这个servlet,可调用servlet的destroy方法来结束该servlet。结束过程将在结束Serlvet中讨论。

Servlet运行时的基本原理



1)、当WEB客户请求Servlet服务或当WEB服务启动时,容器环境加载一个Java Servlet类。
2)、容器环境也将根据客房请求创建一个Servlet对象实例,或者创建多个Servlet对象实例,并把这些实例加入到Servlet实例池中。
3)、容器环境调用Servlet的初始化方法HttpServlet.init()进行Servlet实例化。在调用初始化时,要给init()方法传入一个ServletConfig对象,ServletConfig对象包含了初始化参数和容环境的信息,并负责向servlet传递信息,如果传递失败,则会发生ServletException。Servlet将不能正常工作。
4)、容器环境利用一个HttpServletRequest和HttpServletResponse对象,封装从Web客户接收到的HTTP请求和由Servlet生成的响应。
5)、容器环境把HttpServletRequest和HttpServletResponse对象传递给HttpServlet.Service()方法。这样,一个定制的Java Servlet就可以访问这种HTTP请求和响应接口。Servlet()方法可被多次调用,各调用过程运行在不同的线程中,互不干扰。
6)、定制的Java Servlet从HttpServletRequest对象读取HTTP请求数据,访问来自HttpSession或Cookie对象的状态信息,进行特定应用的处理,并且用HttpServletResponse对象生成HTTP响应数据。
7)、当WEB服务器和容器关闭时,会自动调用HttpServlet.destroy()方法关闭任何打开的资源,并进行一些关闭前的处理。

servlet 的生命周期。

Servlet 运行在 Servlet 容器中,其生命周期由容器来管理。 Servlet 的生命周期通过 Servlet 接口中 init ()、 service ()、 destroy ()方法来表示。

Servlet 的生命周期包含了下面 4 个阶段。

(1)       加载和实例化

Servlet 容器负责加载和实例化 Servlet 。当 Servlet 容器启动时,或者在容器检查到需要这个 Servlet 来响应一个请求时,创建 Servlet 实例。当 Servlet 容器启动后,它必须要知道所需的 Servlet 类在什么位置, Servlet 容器可以从本地文件系统、远程文件系统或者其他网络服务器中通过类加载器加载 Servlet 类,成功加载后,容器创建 Servlet 实例。因为容器是通过 Java 的反射 API 来创建 Servlet 实例,调用的是 Servlet 的默认构造函数,也就是那个不带参数的构造函数,所以我们在编写 Servlet 类的时候,不应该提供带参数的构造函数。——这也就是为什么 Servlet 类可以不写构造函数的原因。

(2)       初始化

在 Servlet 实例化之后,容器必须调用 Servlet 的 init ()方法初始化这个对象。初始化的目的是为了让 Servlet 对象在处理客户请求前完成一些初始化工作,如建立数据库连接,获取配置信息等。对于每一个 Servlet 实例, init ()方法只能被调用一次。在初始化期间, Servlet 实例可以使用容器为它准备的 ServletConfit 对象从 web 应用程序的配置信息(在 web.xml 中配置)中获取初始化的参数信息。在初始化期间,如果发生错误, Servlet 实例可以抛出异常来通知容器。

(3)       请求处理

Servlet 容器调用 Servlet 的 service ()方法对请求进行处理。要注意的是,在 service ()方法调用之前, init ()方法必须成功执行。在 service ()方法中, servlet 实例通过 ServletRequest 对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用 servletResponse 对象的方法设置响应信息。

(4)       服务终止

当容器检测在一个 Servlet 实例应该从服务中被移除的时候,容器就会调用实例的 destroy ()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要释放内存或者容器关闭时,容器就会调用 Servlet 实例的 destroy ()方法。在调用 destroy ()方法后,容器会释放这个 Servlet 实例,该实例随后会被 java 的垃圾收集器回收。

 

在整个 Servlet 的生命周期过程中,创建 Servlet 实例、调用实例的 init ()和 destroy ()方法都只进行一次,当初始化完成后, Servlet 容器会将该实例保存在内存中,通过调用它的 service ()方法,为接收到的请求服务。
分享到:
评论

相关推荐

    servlet与jsp的区别

    ### servlet与jsp的区别 在Web开发领域中,servlet与JSP是两种非常重要的技术,它们都是Java EE标准的一部分,并且被广泛应用于构建动态网页。虽然它们都可以用来处理客户端请求并生成动态页面,但它们之间还是存在...

    jsp与servlet的联系和区别

    ### jsp与servlet的联系和区别 在深入探讨JSP与Servlet的联系与区别的过程中,我们首先需要理解这两个概念的基本定义以及它们在Web开发中的角色。 #### JSP(JavaServer Pages) JSP是一种基于Java技术的动态网页...

    旅游管理系统 jsp+servlet.zip

    【旅游管理系统 jsp+servlet.zip】是一个基于Java Web技术的毕业设计或课程设计项目,它利用了JavaServer Pages (JSP) 和Servlet技术,结合MySQL数据库来构建一个完整的旅游管理平台。这个系统的设计和实现涵盖了多...

    JSP+Servlet实现简易购物车功能

    在Web开发领域,JSP(JavaServer Pages)和Servlet是常用的两种技术,它们结合使用能够构建动态、交互式的Web应用程序。本项目“JSP+Servlet实现简易购物车功能”就是一个典型的示例,它展示了如何利用这两者来创建...

    jsp说servlet区别

    虽然JSP和Servlet都可以用来处理客户端的请求并生成动态响应,但它们之间存在一些关键的区别: 1. **应用场景**: - **Servlet**:更适合处理业务逻辑,比如用户认证、数据处理等。Servlet通常用于构建应用程序的...

    基于JSP+Servlet小项目

    【基于JSP+Servlet小项目】是一个典型的JavaWeb应用程序,它是使用JavaServer Pages(JSP)技术和Servlet进行开发的。这个项目可能包含了从用户界面到后端数据处理的完整流程,展示了如何在Web环境中整合这两种技术...

    基于jsp+servlet的博客

    【基于jsp+servlet的博客系统】是一个典型的Web应用程序,它结合了JavaServer Pages(JSP)和Servlet技术,用于构建动态、交互式的博客平台。在这个系统中,JSP主要用于展示用户界面,而Servlet则承担了业务逻辑处理...

    JSP+servlet+mysql网盘系统源码+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...JSP+servlet,网盘系统,mysql

    jsp和servlet留言板

    【jsp和servlet留言板】是基于Java Web技术实现的一个交互式应用,主要使用了JavaServer Pages(JSP)和Servlet技术。JSP是Java的一种动态网页标准,它允许开发人员在HTML页面中嵌入Java代码,实现了视图与逻辑的...

    jsp javabean servlet的区别

    在Java Web开发中,JSP (JavaServer Pages)、JavaBean和Servlet是三个核心概念,它们各有分工,共同构建了动态网页应用。了解它们的区别对于有效地编写和维护Web应用程序至关重要。 1. JSP(JavaServer Pages):...

    吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案

    第四章至第九章涵盖了JSP和Servlet的高级主题,包括JSP的自定义标签、Servlet的过滤器、JSP和Servlet的安全机制等。 本资源为JSP和Servlet学习提供了系统的指导和参考,适合初学者和中级开发者学习和参考。 知识点...

    JSP和Servlet公司培训课件

    **JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们在构建动态Web应用程序方面发挥着关键作用。本培训课件旨在帮助你深入理解这两者,并提供实际操作的指导。** **JSP技术简介:** JSP是一种...

    jsp+servlet项目

    JSP和Servlet是Java EE平台上的两个核心组件,它们主要用于构建动态Web应用程序。 【JSP(Java Server Pages)】: JSP是一种视图技术,它允许开发者将HTML代码与Java代码混合编写,从而方便地创建动态网页。在...

    jsp&servlet电子书

    本书全面覆盖了Java Server Pages (JSP) 和Servlet这两个核心技术,旨在帮助读者理解并掌握Web开发中的核心概念和实践操作。在学习JSP与Servlet的过程中,学生常常会遇到各种问题,例如概念混淆、操作难度、应用场景...

    大学本科JSP课程的期末作业JSP+Servlet+layui实现的博客系统源码.zip

    大学本科JSP课程的期末作业JSP+Servlet+layui实现的博客系统源码。教程 下载使用tomcat就可以使用,数据库语句也有,如果要修改数据库配置就在tool下面的工具类修改即可大学本科JSP课程的期末作业JSP+Servlet+layui...

    jsp+servlet实现简单的登录注册

    而"CeShi"可能是项目的源代码文件夹,包含JSP文件(如login.jsp、register.jsp)、Servlet文件(如LoginServlet.java、RegisterServlet.java)和其他辅助类。JSP文件通常负责展示界面,Servlet文件则负责处理后台...

    用jsp和Servlet实现登录

    在本文中,我们将深入探讨如何使用JavaServer Pages (JSP) 和Servlet技术来实现一个基本的用户登录系统。Servlet和JSP是Java Web开发中的重要组成部分,它们在服务器端处理HTTP请求并生成动态网页内容。 首先,让...

    JSP和Servlet基础知识点

    **JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们为构建动态、交互式的Web应用程序提供了强大的支持。** ### JSP基础 **1. JSP概述:** JSP是一种服务器端脚本语言,它允许开发人员将HTML...

    JSP 和Servlet 技术构建BBS 论坛系统(pdf)

    在IT领域,JSP(JavaServer Pages)和Servlet是两种重要的服务器端技术,常用于构建动态Web应用程序,如BBS论坛系统。本教程《JSP 和Servlet 技术构建BBS 论坛系统》深入浅出地介绍了如何利用这两项技术来搭建功能...

    饮管理系统JSP+Servlet实现

    本文将深入探讨一个基于JSP(JavaServer Pages)和Servlet技术实现的简易餐饮管理系统,该系统涵盖了餐桌管理和订单管理两大核心功能。通过HTML5的前端设计与后端的Java技术相结合,构建了一个用户友好的交互界面和...

Global site tag (gtag.js) - Google Analytics