日期:2014-05-16  浏览次数:20531 次

jsp和servlet的区别

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

一、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)