1  Servlet 概述

Servlet简介——开发动态web资源的技术
Sun公司在API提供了一个servlet接口,如开发一个java程序向浏览器输出数据:
1)编写一个java类,实现servlet接口;
2)把开发好的java类部署到web服务器中。

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
  ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
  ②装载并创建该Servlet的一个实例对象。
  ③调用Servlet实例对象的init()方法。
  ④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  ⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

Servlet是用Java编写的且协议和平台都独立的服务器端的组件。与客户端组件Applet相对应。Servlet扩展了面向请求/响应的服务器的模块,使用平台专用的API进行服务器端的编程。Servlet为服务器和基于Web的客户之间的通信提供了一条更为简单的途径。它的特殊用途包括:

(1) 允许用户之间的合作。一个Servlet可以同时并发处理大量的请求,而且可以同步请求,因此使用Servlets能够支持像在线会议这样的系统。Servlets能够并发地服务多个客户。

(2) 转发请求。Servlets能够转发请求到其它的服务器和Servlets,因此Servlets能够被用来在多个镜像同一个内容的服务器之间来平衡负载,在多个服务器上根据任务类型或者组织边界分割单一的逻辑服务。

1. 初始化Servlet

当服务器载入一个Servlet时,服务器运行Servlet的init方法。初始化在客户请求被处理和Servlet被销毁之前完成。

2.  Servlet_Client交互

初始化成功后,HTTP Servlet调用Service方法处理客户请求,Service方法将每个请求分配到处理这个请求的方法,从而支持标准的HTTP客户请求。HttpServlet类中的方法处理客户请求时使用以下两个参数:

(1)  HttpServletRequest对象:封装了从客户来的数据,主要提供了访问初始请求数据的方法和字段;访问客户数据时使用getParameter方法得到一个已命名参数的值。

(2)  HttpServletResponse对象:封装了对客户的响应。使用getWriter方法返回文本数据给客户(可以以HTML网页的形式表现出来)。

Service方法支配的HTTP请求如:

doGet                      处理GET、条件GET和HEAD请求

doPost                     处理POST请求

doPut                      处理PUT请求

doDelete                  处理DELETE请求

通常,编写的Servlet重载处理它支持的HTTP交互的方法,如果出错,返回一个BAD_REQUEST(400)错误。

Java—Servlet技术的更多相关文章

  1. Java Servlet 技术简介

    Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...

  2. 【Java】Java Servlet 技术简介

    Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创 ...

  3. Java Servlet 技术简介 from:IBM Dev

    点评:讲的没有太听懂. from: http://www.ibm.com/developerworks/cn/education/java/j-intserv/index.html#resources

  4. Java Servlet完全教程

    Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servle ...

  5. 漫谈servlet技术

    1.要谈到Servlet技术,不得不先谈谈动态网页的概念. 编写过网页的人都知道,浏览器能够根据HTML静态标记语言来显示各式各样的网页.但是如果我们需要在网页上完成一些业务逻辑:比如登陆验证.或者说 ...

  6. JavaWeb之Java Servlet完全教程(转)

    Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求.尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求. Servle ...

  7. Mac OS中Java Servlet与Http通信

    Java中一个Servlet其实就是一个类,用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序.Servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器 ...

  8. Java Servlet异步处理、非阻塞I/O和文件上传

    异步处理 应用服务器中的 web容器通常对各个客户端情求分别使用一个服务器线程.在工作负载很繁重的情况下,容器常要大量线程来为所有客户端请求服务.可扩展性限制包括内存用尽,或容器线程池耗尽.为了创建可 ...

  9. Java servlet和JSP的区别和联系

    Java servlet技术:在Java代码中嵌入HTML JSP技术:HTML输出时比较便捷,就在HTML中嵌入Java代码 Java servlet技术:擅长编写Java代码 JSP技术:擅长页面 ...

随机推荐

  1. 【转】缺少servlet-api.jar包

    转载地址:http://blog.sina.com.cn/s/blog_6cfb18070100n7pu.html 在Eclipse中缺省servlet-api.jar包,由于servlet-apbi ...

  2. CSU 1597 薛XX后代的IQ

    Description 薛XX的低IQ是个令人头疼的问题,他的队友深受其害.幸运的是,薛XX非常有钱,所以他买了一些可以提高他的后代的IQ的药.这种药有三个属性,A,B和P.当薛XX使用这种药的时候, ...

  3. 接触Matlab5年一个总结(Matlab要掌握的一些要点 )

    阅读目录 前言 Matlab的开发环境与简单介绍 Matlab的常见命令 Matlab的灵魂-矩阵操作 Matlab的.m或.fig的编程与技巧 从大二开始接触到matlab,讲真,这是一个我觉得很良 ...

  4. zigbee学习之路(十一):看门狗

    一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU ...

  5. treeview 控件使用和数据绑定

    一.TreeViewe 是由多个类来定义的,TreeView组件是由命名空间“System.Windows.Froms”中的“TreeView”类来定义的,而其中的节点(即Node),是由命名空间“S ...

  6. webapi aspose导出excel表格

    API 通过get请求,注意用到一个[FromUri]特性,使GET接收实体参数 /// <summary> /// 导出 /// </summary> /// <par ...

  7. mysql查看修改字符集

    1.列出MYSQL支持的所有字符集: SHOW CHARACTER SET; 2.当前MYSQL服务器字符集设置 SHOW VARIABLES LIKE 'character_set_%'; 3.当前 ...

  8. 简单播放器(增加sdl事件控制)

    #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswscal ...

  9. eclipse加载maven工程提示pom.xml无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3解决方案

    pom文件提示信息: Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3 from http:/ ...

  10. java的4种代码块

    一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args ...