在什么时候用servlet?

数据库处理(查询、修改)部分用的是bean,但是称为工具类 
servlet专门用来处理请求和选择用哪个bean来处理请求 
bean饱含逻辑,来处理数据

javabean、servlet、jsp分别对应M(odel)、C(ontroller)、V(iew) 
举例: 
servlet查询数据库 
javabean保存查询结果 
jsp显示查询结果

 1.Servlet 是什么?

Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。

Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet,并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。例如,Servlet 可完成如下功能: 
  (1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。 
  (2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。 
  (3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。 
  (4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏服务器。 
  (5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连
接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP)进行通信。 
  (6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括(SSI)。 
  (7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。

2.Servlet 的生命周期

  Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。
  (1) 初始化
  在下列时刻装入 Servlet: 
 如果已配置自动装入选项,则在启动服务器时自动装入 
 在服务器启动后,客户机首次向 Servlet 发出请求时 
 重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象。 
  (2) 请求处理
  对于到达服务器的客户机请求,服务器创建特定于请求的一个“请求”对象和一个“响应”对象。服务器调用 Servlet 的 service() 方法,该方法用于传递“请求”和“响应”对象。service() 方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请求,例如 doGet()、doPost() 或其它的方法。 
  (3) 终止
  当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。

3. Java Servlet API
  Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java Servlet 开发工具。 下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。
  HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建一个 HTTP Servlet,请扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由 <FORM> 和 </FORM> 标记定义的。表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。 HttpServlet 类包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是继承的。
  (1) init() 方法
  在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。 
  缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。 
  (2) service() 方法
  service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。
 当一个客户通过HTML 表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。
 当一个客户通过HTML 表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。
  Servlet的响应可以是下列几种类型:
  一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。
  一个HTTP错误响应, 重定向到另一个URL、servlet、JSP。
  (3) destroy() 方法
  destroy() 方法仅执行一次,即在服务器停止且卸装Servlet 时执行该方法。典型的,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。 
当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个Servlet 在运行service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。 
  (4) GetServletConfig()方法
  GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和  ServletContext。ServletContext 接口提供有关servlet 的环境信息。
  (5) GetServletInfo()方法
  GetServletInfo()方法是一个可选的方法,它提供有关servlet 的信息,如作者、版本、版权。
  当服务器调用sevlet 的Service()、doGet()和doPost()这三个方法时,均需要 “请求”和“响应”对象作为参数。“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。javax.servlet 软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http 软件包中的相关类为HttpServletRequest 和 HttpServletResponse。Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用“请求”对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。Servlet 可以调用“响应”对象的方法发送响应,该响应是准备发回客户机的。

2 创建HTTP Servlet
  创建一个 HTTP Servlet,通常涉及下列四个步骤:
  1. 扩展 HttpServlet 抽象类。 
  2. 重载适当的方法。]如覆盖(或称为重写)doGet() 或doPost()方法。 
  3. 如果有 HTTP 请求信息的话,获取该信息。用 HttpServletRequest 对象来检索 HTML 表格所
  提交的数据或 URL 上的查询字符串。“请求”对象含有特定的方法以检索客户机提供的信息,有3个可用的方法:
 getParameterNames(),
 getParameter(),
 getParameterValues()。
  4. 生成 HTTP 响应。HttpServletResponse 对象生成响应,并将它返回到发出请求的客户机上。它
的方法允许设置“请求” 标题和“响应”主体。“响应”对象还含有 getWriter() 方法以返回一个 PrintWriter 对象。使用 PrintWriter 的 print() 和 println() 方法以编写 Servlet 响应来返回给客户机。或者,直接使用out对象输出有关HTML文档内容。

4.3 调用 Servlet
  要调用 Servlet 或 Web 应用程序,请使用下列任一种方法:

由 URL 调用、

在 <FORM> 标记中调用、

在 <SERVLET>标记中调用、

在 JSP 文件中调用、在 ASP 文件中调用。

关于serverlet相关推荐

  1. JavaWeb学习之路——jsp与serverlet(一)

    Jsp与serverlet 目录架构图如下所示: 1.jsp指令 <%@ page contentType="text/html;charset=UTF-8" languag ...

  2. serverlet 区别_jsp serverlet 区别

    JSP和Servlet的概念对于JSP初学者来说比较不清楚,以下总结一些个人看法: (1).简单的来说Jsp就是含有Java代码的html,而servlet是含有html的Java代码: (2).Js ...

  3. serverlet快速入门

    转载: http://blog.sina.com.cn/s/blog_85f5590f0100wm7q.html 现在的JSP书籍有的是直接讲述JSP的使用,然后再讲解SERVERLET的使用;也有书 ...

  4. Serverlet简介及理解

    Serverlet简介: Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web ...

  5. jsp和serverlet的区别

    开始找工作面试的第一家公司,爱思创新 面试题: 1.jsp和serverlet的区别 简单来说: jsp:是包含java程序片的html文件 servlet:是包含html的java文件 其实说白了J ...

  6. 4章Servlet技术:http头查看+Serverlet入门

    1.http头查看 360浏览器进入"极速模式",鼠标右键"审查元素",打开网页元素查看对话框,单击"网络". 点击下面加载的网页资源,即可 ...

  7. 【Serverlet】学习

    Serverlet概念 1,提供基于协议的请求/响应服务的java类,是java编写的服务器端的程序, 主要功能: 交互式浏览和修改数据,生成动态的web内容.狭义的概念是指java语言实现的一个接口 ...

  8. 框架—— Serverlet

    Serverlet 1.Servlet是运行在服务器中的动态资源. 能接收用户的请求,发出响应. 2.servlet 由支持 servlet 的服务器:servlet 引擎,负责管理运行. 3.当多个 ...

  9. serverlet 原理_serverlet_servlet工作原理面试题_serverlet和jsp(3)

    小结 Servlet filter可以在调用一个servlet的服务方法后,拦载或加工HTTP请求.尽管这非常诱人,但其实际使用却有所限制,因为你不能改变HttpServletRequest对象.se ...

  10. serverlet 原理_Serverlet详解 | 学步园

    Serverlet简介: Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web ...

最新文章

  1. mac 显示隐藏文件
  2. 【虚拟化实战】容灾设计之三Stretched Cluster
  3. startprocessinstancebykey()里面填写的参数_3种方法,快速学会在Word文档里面如何插入表格...
  4. 基于Android Studio搭建Android应用开发环境
  5. 授权后接口调用(UnionID)
  6. next和hasnext_使用Java中的next()和hasNext()方法遍历List元素
  7. shell获取命令行结果指定列(指定列结果)
  8. 输出以下图案菱形7行_华丽大气的手工围巾,颜值丝毫不输大牌商品,一款花式菱形围巾!...
  9. 关于excel表的生成
  10. 什么是MongoDB
  11. python中高阶函数map怎么用_python六十课——高阶函数之map
  12. 图像分类模型的学习笔记
  13. 差分约束系统 POJ 3169 Layout
  14. php gd support not found.,安装php71w-gd并获取错误GD库扩展不适用于此PHP安装
  15. Android中AndFix使用
  16. OpenCL编程基本流程及完整示例
  17. 网易云音乐推荐中的用户行为序列深度建模
  18. 微分方程数值解法的matlab程序
  19. Facebook登陆服务器校验,权限请求以及数据获取
  20. ESLint中no-param-reassign错误

热门文章

  1. CSS设置 background-image透明度小技巧
  2. java异常之-ClassNotFoundException: .......web.context.ContextLoaderServlet
  3. 【模板】FHQ Treap
  4. pfx证书导入方式,步骤流程
  5. MFC控件 --- 进度条【案例】
  6. d2的自定义训练和增强
  7. Python爬虫实战(爬取豆瓣电影)
  8. RestTemplate技术预研——OkHttp
  9. jemter使用beanshell的几种方法
  10. 高通Linux Android 平台中的蓝牙功能学习 (4)-- Android Marshmallow 中的蓝牙 4.2