`
s103y
  • 浏览: 116131 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jsp和servlet的区别

    博客分类:
  • java
 
阅读更多

上次被别人问到这个问题,当时没怎么答出来,所以就狠狠的补习了一下。

一、jsp

   JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。

  在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。

  JSP的优点:

  ·对于用户界面的更新,其实就是由 Web Server进行的,所以给人的感觉更新很快。
  ·所有的应用都是基于服务器的,所以它们可以时刻保持最新版本。
  ·客户端的接口不是很繁琐,对于各种应用易于部署、维护和修改。

      jsp的生命周期:

      解析阶段:Servlet容器解析JSP文件代码,如果有语法错误,就会向客户端返回错误信息
      翻译阶段:Servelet容器把JSP文件翻译成Servelet源文件
      编译阶段:Servelet容器编译Servelet源文件,生成servelet类
      初始化阶段:加载与JSP对应的Servelet类,创建其实例,并调用它的初始化方法
      运行时阶段:调用与JSP对应的Servelet实例的服务方法
      销毁阶段:调用与JSP对应的Servelet实例的销毁方法,然后销毁Servelet实例。

二、servlet

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

servlet生命周期

 Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。 
  在代码中,Servlet生命周期由接口javax.servlet.Servlet定义。所有的Java Servlet 必须直接或间接地实现javax.servlet.Servlet接口,这样才能在Servlet Engine上运行。Servlet Engine提供network Service,响应MIME request,运行Servlet Container。 javax.servlet.Servlet接口定义了一些方法,在Servlet 的生命周期中,这些方法会在特定时间按照一定的顺序被调用。如下图所示。
 
  servlet的定义及其生命周期
 
                                                    Servlet的生命周期
  Servlet 如何被加载(Load)、被实例化(Instantiated)
 
  Servlet Engine 负责实例化和加载Servlet,这个过程可以在Servlet Engine 加载时执行,可以在Servlet 响应请求时执行,也可以在两者之间的任何时候执行(配置为load on start  up的 servlet是在容器启动时被加载的)。
 
  Servlet如何被初始化(Initialized)
 
  Servlet Engine 加载好Servlet 后,必须要初始化它。初始化时Servlet 可以从数据库里读取初始数据,建立JDBC Connection,或者建立对其他有价值的资源的引用。
 
  在初始化阶段,Init( )方法被调用。这个方法在javax.servlet.Serlet接口中定义。Init( )方法以一个Servlet 配置文件(ServletConfig 型)为参数。Servlet configuration 对象由Servlet Engine 实现,可以让Servlet 从中读取一些name-value对的参数值。ServletConfig对象还可以让Servlet接受一个Servlet Context对象。
 
  Servlet 如何处理请求
 
  Servlet 被初始化以后,就处于能响应请求的就绪状态。每个对Servlet 的请求由一个Servlet Request 对象代表。Servlet 给客户端的响应由一个Servlet Response对象代表。当客户端有一个请求时,Servlet Engine 将ServletRequest 和ServletResponse对象都转发给Servlet,这两个对象以参数的形式传给Service方法。这个方法由javax.servlet.Servlet定义并由具体的Servlet 实现。
 
  Servlet还可以实现 ServletRequest 和ServletResponse接口。ServletRequest接口可以让Servlet 获取客户端请求中的参数,如form data、request信息、协议类型,等等。Servlet 可以从ServletInputStream流中读取request 数据。ServletResponse接口允许Servlet设置response headers和status codes。实现这个接口可以使Servlet能访问ServletOutputStream流用来向客户端返回数据。
 
  Servlet如何被释放
 
  Servlet Engine 没有必要在Servlet 生命周期的每一段时间内都保持Servlet的状态。Servlet Engine可以随时随意使用或释放Servlet。因此,你不能依赖Servlet class或其成员存储信息。当Servlet Engine判断一个Servlet应当被释放时(比如说Engine准备Shut down 或需要回收资源),Engine必须让Servlet 能释放其正在使用的任何资源,并保存持续性的状态信息。这些可以通过调用Servlet的destroy方法实现。 在Servlet Engine 释放一个Servlet 以前,必须让其完成当前实例的service方法或是等到timeout(如果Engine定义了timeout)。当Engine释放一个Servlet以后,Engine将不能再将请求转发给它,Engine必须彻底释放该Servlet并将其标明为可回收的(给garbage collection)。
 
  在Servlet API中最重要的是Servlet interface。所有的Servlets执行这个interface的方式有很多种:或者是直接的,或者通过extending这个class执行它,如 HttpServlet。这个Servlet interface 提供并安排Servlet与客户端联系的方法。Servlet 编写者可以在他们开发Servlet程序时提供更多一些或所有这样的方法。
 
  当一个Servlet接收来自客户端的调用请求时,它接收两个对象:一个是ServletRequest,另外一个是ServletResponse。这个ServletRequest class 概括从客户端到服务器之间的联系,而 ServletResponse class 概括从Servlet返回客户端的联系。
 
  ServletRequest interface 可以获取到这样一些信息,如由客户端传送的参数名称,客户端正在使用的协议,产生请求并且接收请求的服务器远端主机名。它也提供获取数据流的Servlet、ServletInputStream,这些数据是客户端引用中使用HTTP POST和PUT方法递交的。一个ServletRequest的子类可以让Servlet获取更多的协议特性数据。
 
  例如,HttpServletRequest 包含获取HTTP-specific头部信息的方法。ServletResponse interface 给出相应客户端的Servlet方法。它允许Servlet设置内容长度和回应的MIME类型,并且提供输出流ServletOutputStream,通过编写者可以发回相应数据。ServletResponse子类可以给出更多protocol-specific容量的信息。例如,HttpServletResponse 包含允许Servlet操作HTTP-specific头部信息的方法。

三、区别

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之间的区别实在是不大。

<!-- #EndEditable -->

分享到:
评论

相关推荐

    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小项目】是一个典型的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&Servlet学习笔记(第二版)课后答案

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

    基于jsp&servlet开发的购物车项目

    在IT行业中,Web开发是一项核心技能,而基于JSP(JavaServer Pages)和Servlet的开发是构建动态网站的常见方式。本项目是一个基于这两项技术的购物车应用,旨在帮助初学者理解如何将它们结合起来实现实际功能。在这...

    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公司培训课件

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

    JSP和Servlet基础知识点

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

    用jsp和Servlet实现登录

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

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

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

    饮管理系统JSP+Servlet实现

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

    基于JSP和Servlet简单留言薄系统

    【基于JSP和Servlet简单留言薄系统】是一个基础的Web应用程序,它利用了Java Server Pages (JSP) 和Servlet技术来实现用户交互和后端数据处理。在这个系统中,用户可以进行基本的留言操作,包括添加新的留言,删除已...

Global site tag (gtag.js) - Google Analytics