一、基本的servlet API
JavaEE关于Servlet的API主要有两个包:javax.servlet和javax.servlet.http。前者主要提供了Web容器能够使用的servlet基本类和接口,后者主要包括和HTTP协议相关的servlet类和接口。对servlet的编程,主要是根据需要,继承这些类实现需要的功能。

javax.servlet包和javax.servlet.http包的类和接口主要分以下几类:
1.servlet基本类
javax.servlet.Servlet
javax.servlet.http.HttpServlet
javax.servlet.SingleThreadModel
javax.servlet.GenericServlet
这些是servlet程序需要直接或间接继承的抽象类和接口。SingleThreadModel接口可以保证servlet在同一时间只处理一个客户请求。

2.Web请求和响应类
javax.servlet.ServletRequest
javax.servlet.ServletResponse
javax.servlet.ServletInputStream
javax.servlet.ServletOutputStream
javax.servlet.HttpServletRequest
javax.servlet.HttpServletResponse

3.和Web容器联系
javax.servlet.ServletConfig
ServletConfig接口使Web容器在servlet初始化时(一般是web服务器启动并载入Web应用时)能够和servlet进行联系。Servlet可以通过该接口取得初始变量和servlet名称等。

4.和Web应用联系
javax.servlet.ServletContext
这个接口是Servlet和Web应用进行连接,使用servlet和Web程序在运行时能够传递数据。Servlet之间也可以通过这个接口共享数据。ServletContext是包含在ServletConfig中的,它和ServletConfig的主要不同是:ServletContext有更多方法,主要是在servlet运行时使用,而ServletConfig主要是在servlet启动时从Web容器中得到。

5.和其他Web资源的共同作用
javax.servlet.http.RequestDispatcher
RequestDispather支持servlet和JSP,其他servlet或Web资源之间的调用。这样当servlet需要引入其他servlet、JSP或HTML内容时,可以更灵活地控制它们之间的逻辑关系。

6.错误异常类
javax.servlet.ServletException
javax.servlet.UnavailableException

7.其他附属类
javax.servlet.http.HttpUtils
javax.servlet.http.Cookie
前者提供servlet的一些帮助功能,后者是对应HTTP的Cookie。

二、主要servlet类和接口的使用方法
1.javax.servlet.Servlet接口
这个接口定义了servlet初始化、进行服务和终止服务的基本方法,这个些方法都和servlet的生命周期有关。javax.servlet.Servlet将被HttpServlet和GenericServlet所实现。一般编程者在其中通过继承HttpServlet间接使用了javax.servlet.Servlet的方法,比如init(),service(),destroy()。
2.javax.servlet.GenericServlet类
该类定义了一个通用的servlet类。它的用法和HTTP协议无关,主要用来方便编程者自己开发其他Web协议的servlet程序。GenericServlet实现了上面的Servlet和ServletConfig接口,它提供了包括Servlet生命周期方法的一些常用方法。继承这个类的servlet需要填定其service()方法。它的init()、destroy()方法和javax.servlet.Servlet的同名方法基本一样。另外,它加入了getInitParameter()等方法。
3.javax.servlet.http.HttpServlet类
HttpServlet是最常用的Servlet类,编程者需要继承这个抽象类并填充其有关doXXX方法。另外在编程时注意各个方法的线程关系,避免当多个Web请求到来时,servlet会产生错误。它的service()方法一般不需要被替代,它会调用和用户请求对应的doXXX等方法。在一般servlet中,使用最多的是doGet和doPost方法,没有必要重写doOptions和doTrace方法。
4.javax.servlet.SingleThreadModel接口
Web容器保证实现SingleTheadModel接口的servlet运行在单线程模式下,也就是保证其service()方法不会使用多线程。Web容器有两种方法可以实现这一功能。一种是创建并管理多个servlet实例,每个实例在同一时间单独处理一个请求;另一种是让请求依照顺序被一个servlet处理。
5.javax.servet.ServletConfig接口
ServletConfig接口能够使Web容器在servlet初始化时向servlet传递一些设置信息。设置信息是在servlet之外定义的,如在Web容器中配置描述文件web.xml内指定的初始化变量。在servet进行配置可以带来很大的灵活性。
6.javax.servlet.ServletRequest接口和javax.servlet.ServletResponse接口
这两个接口定义了来自客户端的请求和向客户端发送的响应。Web容器根据客户请求建立ServetRequest对象和ServletResponse对象并作为参数传递给servlet的service()方法。
可以从ServletRequest中获得请求参数(即url后的&var1=value1...)、请求属性(attributes)、和输入流。另外,它还可以得到Web协议信息(如getRemoteAddr(),getRemoteHost(),GetServetName()等)。
当Web容器通过ServletResponse接口向客户传递响应数据时,数据的格式主要可以有二进帛类型和文本类型。如果在servlet中需要发送二进制数据,servlet要用getOutputStream()取得的ServletOutputStream对象;如果需要发送文本数据,要用getWriter()取得PrinterWriter对象。Servlet可以通过setContentType()设置响应数据的字符集(注:此设置应在getWriter方法获得PrinterWriter对象前取得)。
7.javax.servlet.ServletInputStream接口和javax.servlet.ServletOutputStream接口
SetvletInputStream用于从ServletRequest中获取数据输入流;ServletOutputStream用于向ServletResponse中写数据流。
8.javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletReponse接口
这两个接口分别继承自ServletRequest,ServletResponse,它们提供了处理HTTP请求和响应的多种方法。在servlet编程中这两个接口作为参数传递给doGet,doPost等方法。可以从这两个方法中获得和设置HTTP头信息。
9.javax.servlet.http.HttpSession接口
HttpSession提供了会话的管理机制。它可以用来识别一个用户和一系列Web请求的关联关系。同时HttpSession可以用来记载用户的一些特定信息。在Web容器中,常用的实现会话的方式有通过cookie或重写URL等。HttpSession编程接口代表在HTTP客户和Web服务器之间创建的会话。使用这个接口的方法可以查询和管理关于会话的信息。

转载于:https://www.cnblogs.com/shudaizi/archive/2011/08/30/2160079.html

Servlet编程API相关推荐

  1. spring mvc-使用Servlet原生API作为参数

    https://www.cnblogs.com/caoyc/p/5635701.html 具体看代码: @RequestMapping("/testServletAPI")publ ...

  2. struts2:在Action中使用Servlet的API,设置、读取各种内置对象的属性

    有两种方式可以实现在Action中使用Servlet的API.一种是使用org.apache.struts2.ServletActionContext类,另一种是使用com.opensymphony. ...

  3. Hadoop MapReduce编程 API入门系列之压缩和计数器(三十)

    不多说,直接上代码. Hadoop MapReduce编程 API入门系列之小文件合并(二十九) 生成的结果,作为输入源. 代码 package zhouls.bigdata.myMapReduce. ...

  4. (转)Struts2访问Servlet的API及......

    http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...

  5. HBase编程 API入门系列之HTable pool(6)

    HTable是一个比较重的对此,比如加载配置文件,连接ZK,查询meta表等等,高并发的时候影响系统的性能,因此引入了"池"的概念. 引入"HBase里的连接池" ...

  6. Servlet的API(一)

    版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51248280 目录(?)[+] Servlet的API有很多 ...

  7. Cris 学 SpringMVC(二):使用 servlet 原生 api 作为方法入参

    代码测试 /** 可以使用原生的 servlet 的api 作为目标方法的参数,具体支持以下类型* * HttpServletRequst* HttpServletResponse* HttpSess ...

  8. ssh备考-05Struts2 Action类下的重要API(原生Servlet的API、跳转配置、框架自身的数据封装、自定义拦截器)

    目录 一.Struts框架中如何使用原生Servlet的API 方法一.使用ActionContext类(完全解耦合的方式)(不好用,了解) demo1.jsp demo1Action.java    ...

  9. Hadoop MapReduce编程 API入门系列之查找相同字母组成的字谜(三)

    找出相同单词的所有单词.现在,是拿取部分数据集(如下)来完成本项目. 项目需求 一本英文书籍包含成千上万个单词或者短语,现在我们需要在大量的单词中,找出相同字母组成的所有anagrams(字谜). 思 ...

最新文章

  1. # 关闭 window10自带广告 microsoft star
  2. yolov5 v3.0训练报错: torch.nn.modules.module.ModuleAttributeError: ‘BatchNorm2d‘ object has no attribute
  3. java中Thread与Runnable的区别
  4. ms17-010 php版本,那年MS17-010
  5. boost::container模块实现基本分配的测试程序
  6. 使用过滤统计信息解决基数预估错误
  7. 人群频率 | gnomAD数据库 (二) 后台数据的获取及质量评估
  8. 新生代民工 书籍推荐
  9. 指数分布java_终于搞清楚正态分布、指数分布到底是啥了!
  10. 无损音乐知识收集1(转)
  11. python tkinter控件treeview的数据列表显示的实现_code
  12. 哪些人适合转行学习IT技术呢
  13. 【基础】java操作word,自动更新目录/域
  14. LabVIEW与Web通讯
  15. VS+Qt+C++银行排队叫号系统
  16. wordpress插件_最好的WordPress购物车插件
  17. 1343476-41-4,Acid-PEG5-NHS ester亲水性PEG间隔物增加了在水介质中的溶解度
  18. Code Clinic: Clojure 代码诊所:Clojure Lynda课程中文字幕
  19. 谷歌地图商家数据采集
  20. 菜鸟程序员如何才能快速提高自己的技术

热门文章

  1. 在Swift中使用C语言的指针
  2. linux uboot 源码分析,UBoot源码分析1.pdf
  3. pycharm和python在mac里安装_MAC安装python-opencv及在pycharm下的配置
  4. matlabif语句怎么用_公益心 码客行(2)—— 简单语句
  5. android sdcard 压缩图片,android如何往SDCard中存取图片
  6. java8日期_Java8日期与时间
  7. 网络交换机的分类介绍
  8. 什么是数字光端机?数字光端机使用注意事项详解!
  9. [渝粤教育] 四川农业大学 理论力学 参考 资料
  10. [渝粤教育] 三峡大学 电力电子技术(Ⅱ) 参考 资料