一、了解Servlet的概念

Servlet定义:Servlet是基于Java技术的Web组件,由容器管理并产生动态的内容。Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能。Servlet与客户端通过Servlet容器实现的请求/响应模型进行交互。

注意:Servlet不是从命令行启动的,而是由包含Java虚拟机的Web服务器进行加载

1)Servlet是按照Servlet规范编写的Java类。

2)Servlet应用请求/响应模型,扩展了服务器的功能。

Servlet是WEB应用程序中的一个组件。

Servlet是在JSP之前就存在的运行在服务端的一种Java技术,它是用Java语言编写的服务器端程序在JSP技术出现之前,Servlet被广泛地应用来开发动态的Web应用程序

.如今在J2EE项目的开发中,Servlet仍然被广泛的使用。

Servlet是一种独立于平台和协议的服务器端的Java技术,可以用来生成动态的Web页面与传统的CGI(公共网关接口)和许多其他类似CGI技术相比,Servlet具有更好的可移植性、更强大的功能,更少的投资,更高的效率,更好的安全性等特点

二、Servlet技术功能

Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应的服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应

当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet,之后,Servlet继续运行直到其他客户机发出请求。Servlet的功能涉及范围很广

(1)创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面;

(2)创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段);

(3)与其他服务器资源(包括数据库和基于Java的应用程序)进行通信;

(4)用多个客户机处理连接,接收多个客户机的输入,并将结果传递到多个客户机上,例如,Servlet可以是多参与者的游戏服务器;

(5)当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连接保持在打开状态;当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接,可以通过定制协议进行通信;

(6)将订制的处理提供给所有服务器的标准程序。

三、 Servlet技术特点

Servlet技术带给程序员最大的优势是它可以处理客户端传来的HTTP请求,并返回一个响应

Servlet是一个Java类,Java语言能够实现的功能,Servlet基本上都可以实现(图形界面除外)。总的来说,Servlet技术具有以下特点

1.高效。在服务器上仅有一个Java虚拟机在运行,它的优势在于当多个来自客户端的请求进行访问时,Servlet为每个请求分配一个线程而不是进程。

2.方便。Servlet提供了大量的实用工具例程,例如处理很难完成的HTML表单数据、读取和设置HTTP头、处理Cookie和跟踪会话等。

3.跨平台。Servlet是用Java类编写的,它可以在不同的操作系统平台和不同的应用服务器平台下运行。

4.灵活性和可扩展性。采用Servlet开发的Web应用程序,由于Java类的继承性、构造函数等特点,使得其应用灵活,可随意扩展。

6.共享数据。Servlet之间通过共享数据可以很容易地实现数据库连接池。它能方便地实现管理用户请求,简化Session和获取前一页面信息的操作。而在CGI之间通信则很差。由于每个CGI程序的调用都开始一个新的进程,调用间通信通常要通过文件进行,因而相当缓慢。同一台服务器上的不同CGI程序之间的通信也相当麻烦。

7.安全。有些CGI版本有明显的安全弱点。即使是使用最新的标准和PERL等语言,系统也没有基本安全框架。而Java定义有完整的安全机制,包括SSL\CA认证、安全政策等规范。


四、 Servlet生命周期

跟客户端的Applet相似,Servlet(这里Servlet的概念又回到了最原始的含义)也遵循严格的生命周期。在每个Servlet实例的生命中有三种类型的事件,这三种事件分别对应于由Servlet引擎所唤醒的三个方法:

  1.init()。当Servlet第一次被装载时, Servlet引擎调用这个Servlet的init()方法,只调用一次 。如果某个Sevlet需要特殊的初始化需要。那么Servlet编写人员可以重写该方法来执行初始化任务。这是一个可选的方法。如果某个Servlet不需要初始化,那么默认情况下将调用它父类的init方法。系统保证, 在init方法成功完成以前,是不会调用Servlet去处理任何请求的 。
  2.service()。这是Servlet最重要的方法,是 真正处理请求的地方 。对于每个请求,Servlet引擎将调用Servlet的service方法, 并把Servlet请求对象和Servlet响应对象作为参数传递给它。
  3.destroy()。这是相对于init的可选方法,当Servlet即将被卸载时由Servlet引擎来调用,这个方法用来清除并释放在init方法中所分配的资源。

Servlet的生命周期可以被归纳为以下几步:
  (1) 装载Servlet,这一项操作一般是动态执行的。然而,Servlet通常会提供一个管理的选项,用于在Servlet启动时强制装载和初始化特定的Servlet
  (2) Server创建一个Servlet实例

  (3) Server调用Servlet的init方法

  (4) 一个客户端请求到达Server
  (5) Server创建一个请求对象

  (6) Server创建一个响应对象

  (7) Server激活Servlet的service方法,传递请求和响应对象作为参数
  (8) service方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
  (9) service方法使用响应对象的方法。将响应传回Server,最终到达客户端。Service方法可能激活其他方法以处理请求。如doGet,doPost或其他程序员自己开发的方法
  (10) 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此servlet的service方法,将这两个对象作为参数传递给它,如此重复以上的循环,但无需再次调用init方法,Servlet一般只初始化一次
  (11) 当Server不再需要Servlet时,比如当Server要关闭时,Server调用Servlet的destroy

五、servlet工作过程

Web服务器在与客户端交互时.Servlet的工作过程是:

1.     在客户端对web服务器发出请求

2.     web服务器接收到请求后将其发送给Servlet

3.     Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器.

4.     web服务器将从Servlet实例对象中收到的响应结构发送回客户端.

六 、Servlet与JSP区别

简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如ASP,PHP,JSP都是镶嵌型的SCRIPT语言。

1、JSP在本质上就是SERVLET,但是两者的创建方式不一样.

2、Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不直观.

3、JSP由HTML代码和JSP标签构成,可以方便地编写动态网页.

因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.

1、JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。

2、JSP编译后是“类servlet”。

3、Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP是Java和HTML组合成一个扩展名为.jsp的文件。

4、JSP侧重于视图,Servlet主要用于控制逻辑。

七、Servlet代码结构

该Servlet处理的是get请求,如果读者不理解HTTP,可以把它看成是当用户在浏览器地址栏输入URL、单击Web页面中的链接、提交没有指定method的表单时浏览器所发出的请求

Servlet也可以很方便地处理post请求。post请求是提交那些指定了method=“post”的表单时所发出的请求。若要创建一个Servlet,则应使创建的类继承HttpServlet类,并覆盖doGet()、doPost()方法之一或全部。doGet()和doPost()方法都有两个参数,分别为HttpServletRequest类型和HttpServletResponse类型

HttpServletRequest提供访问有关请求的信息的方法,例如表单数据、HTTP请求头等。HttpServletResponse除了提供用于指定HTTP应答状态(200,404等)、应答头(Content-Type,Set-Cookie等)的方法之外,最重要的是它提供了一个用于向客户端发送数据的PrintWriter

对于简单的Servlet来说,它的大部分工作是通过println()方法生成向客户端发送的页面

注意:doGet()方法和doPost()方法抛出两个异常,因此必须在声明中包含它们。另外还必须导入java.io包(要用到PrintWriter等类)、javax.servlet包(要用到HttpServlet等类)以及javax.servlet.http包要用到(HttpServlet Request类和HttpServletResponse类)。doGet()和doPost()这两个方法是由service()方法调用的,有时可能需要直接覆盖service()方法,比如Servlet要处理Get和Post两种请求时

如果要开发一个可以处理HTTP请求的Servlet程序,则肯定要继承HttpServlet类,而且在自定义的Servlet类中还要重写HttpServlet类中提供的doGet()方法。Servlet程序本身也是按照请求和应答的方式进行的,所以在doGet()方法中定义了两个参数,即HttpServletRequest和HttpServletResponse,用来接收和回应用户的请求.

出处:http://blog.csdn.net/evankaka

Servlet入门总结相关推荐

  1. java servlet 入门_servlet 入门详解

    servlet 入门详解 Servlet是一种服务器端的编程语言,是J2EE中比较关键的组成部分.Servlet本质上也是Java类,编写Servlet需要遵循java的基本语法,但是与一般的Java ...

  2. Servlet入门1

    Servlet入门1  1.1 关于Servlets Servlets是JAVA 2.0中新增的一个全新功能.JAVA Servlets 是运行在请求/面向请求服务器上的模块,比如一个Java-ena ...

  3. Java Servlet系列之Servlet入门

    什么是Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服 ...

  4. (008)前端css,js,Jquery,Servlet入门

    摘要:本周的学习内容是前端的css,js,Jquery,Servlet的入门; 文章目录 1 CSS 1.1 CSS入门以及使用方式 1.2 CSS的选择器(重点) 1.3 css的样式属性 1.3. ...

  5. JavaWeb Tomcat服务器与Servlet入门以及简单登录功能的实现

    Day12 一.Tomcat服务器 1.web资源 2.服务器 3.Tomcat服务器 4.idea 与tomcat 的整合 二.Servlet入门 1. servlet的三种实现方式 2.servl ...

  6. Servlet入门到精通-任亮-专题视频课程

    Servlet入门到精通-5007人已学习 课程介绍         Servlet 是在服务器上运行的小程序.这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独 ...

  7. Servlet 入门

    目录 一.Servlet 介绍 二.Servlet 入门 1.创建JavaEE Web项目 2.定义类,实现 Servlet 接口 3.实现接口中的抽象方法 4.配置 Servlet 三.Servle ...

  8. Servlet入门(一)

    Servlet入门(一) First Why?    a------- CGI(common gateway interface)处理效率低: b------- Servlet可节省服务器开销 The ...

  9. 服务器和Servlet入门

    服务器和Servlet入门 一.软件架构 (一)C/S/架构:C/S架构即Client/Server(客户机/服务器)结构. 图示: (二)B/S架构:B/S即Browser/Server(浏览器/服 ...

  10. Java Web之Servlet入门

    Java Web之Servlet入门 ​ 上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式变得火爆起来. 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源, ...

最新文章

  1. 太励志!80 后草根创业者自学编程年收入上亿
  2. 打断点是什么意思_黄金走势分析?股票所说的大盘几千点,是指的什么意思
  3. 说说 Spring AOP 原理
  4. 【算法竞赛学习】资金流入流出预测-挑战Baseline_时间序列规则
  5. 软件测试实验报告下载 实验一到实验五
  6. 携程去哪儿移动端产品分析报告
  7. Helm 3 完整教程(三):chart 的文件结构和字段详解
  8. KELl警告: MULTIPLE CALL TO SEGMENT
  9. 测试驱动开发心得体会
  10. 非线性动力学中的同步,同步有哪几类?
  11. 【openlayers】ol3入门一基础篇
  12. 【趣味案例】用Python来做一个屏幕录制工具
  13. 怎么在网站中建立一个问答页面(FAQ)?
  14. PHP时间戳和日期互转换
  15. c语言交通违章编程代码,C语言程序设计之交通处罚单管理系统报告(内含代码)...
  16. 【4.3 欧拉函数详解】
  17. 浅谈人机混合智能——计算-算计模型
  18. 常用RGB颜色与数值对应表(0到255)
  19. 棋盘格文件及标定矫正程序(链接直接下载,CAD文件可修改)
  20. [转载]FPGA学习步骤

热门文章

  1. java 方法 示例_Java语言环境getISOLanguages()方法与示例
  2. python 示例_Python条件类| release()方法与示例
  3. vscode无法识别constexpr
  4. Oracle备份还原
  5. 部分排序算法c语言实现
  6. php最简单漂亮的excel导出,php把数据表导出为Excel表的最简单、最快的方法(不用插件)...
  7. easyexcel 在 设置标题_阿里开源(EasyExcel)
  8. win7系统显卡在哪查看
  9. 如何用轻量级RTSP服务本地生成RTSP测试URL
  10. java 并发 变量_实例讲解Java并发编程之变量