1.Servlet简介:

servlet是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

2.作用:

收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

3.优势:

(1)性能明显更好。

(2)Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。

(3)Servlet 是独立于平台的,因为它们是用 Java 编写的。

(4)服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。

(5)Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

4.架构原理图:

5.Servlet 任务:

(1)读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。

(2)读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。

(3)处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。

(4)发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。

(5)发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

6.servlet的生命周期(创建——毁灭):

(1)init ()方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

public void init() throws ServletException {// 初始化代码...
}

(2)service() 方法:处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{
}

(3)doGet() 方法:GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {// Servlet 代码
}

实例:

(4)doPost() 方法:POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。

public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {// Servlet 代码
}

(5)destroy() 方法:destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

  public void destroy() {// 终止化代码...}

7.servlet过滤器:

Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet。Servlet 过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。调用 Servlet 前调用所有附加的 Servlet 过滤器。

作用:

  • 在客户端的请求访问后端资源之前,拦截这些请求。
  • 在服务器的响应发送回客户端之前,处理这些响应。

提高了三个方法:

public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。

public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。

public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。

实例:

Servlet原理:相关推荐

  1. Servlet学习笔记 Servlet原理

    Servlet学习笔记 Servlet原理 一.Servlet基础 1.Servlet执行过程 用户请求一个Servlet,Servlet容器自动构建请求和响应对象,然后执行Servlet的servi ...

  2. JavaWeb中的Servlet原理是什么?(存库,建议收藏)

    Servlet原理 Servlet是由web服务器调用,web服务器在收到浏览器请求之后,经过一系列传输,最后web服务器读取响应信息,将其读取的信息传送到浏览器 Mapping问题: 一个Servl ...

  3. SERVLET JSP篇-02 HTTP协议、Servlet原理

    一.Http协议.HTTPS协议 1.什么是HTTPS HTTPS基于安全套接字层的超文本传输协议,是一个Netscape开发的web协议.即HTTPS=HTTP+SSL,HTTPS在HTTP在HTT ...

  4. 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

    准备 JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本)     对于我们新手来说,JD ...

  5. Servlet 原理

    要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力.虽然它们是彼此依存的,但是又 ...

  6. java servlet原理_java servlet的工作原理是什么?

    展开全部 配置:编辑好的servlet源文件并不能响应用户请求,还必须将其编译成class文件,将编译好的class文件放到WEB-INF/classes路径下62616964757a68696461 ...

  7. 【tomcat】servlet原理及其生命周期

    1.什么是servlet? Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序.而这些Servlet都要实现Servlet这个接口.其主要功能 ...

  8. springboot 自动注入servlet原理

    前置内容: servlet的多种注册方式 SpringBoot启用 ServletContainerInitializer ServletContainerInitializer-SPI SPI部分内 ...

  9. java servlet原理_Java Web 深入分析(8) Servlet工作原理解析

    Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态We ...

  10. Servlet | Servlet原理、开发第一个带有Java小程序Servlet

    ✅作者简介:一位材料转码农的选手,希望一起努力,一起进步!

最新文章

  1. matlab 中调用s函数表达式,[求助]S函数中能否调用M函数
  2. 400 错误,因为url编码问题
  3. 把原来的所有Blog全部转移过来了:-P
  4. 解决Office 2016客户端如何同SharePoint Server2016安装在一起
  5. SpringCloud Consul自定义服务注册
  6. windows程序消息机制(Winform界面更新有关)
  7. magento 问题解答 FQA
  8. 【python】set集合基础与使用
  9. CSS3 背景起始位置 background-origin属性
  10. Configure Javadoc and Source Code for JRE in Eclipse JDT
  11. python语言源程序文件类型_Python语言源程序文件的文件类型是__________。
  12. bochs镜像java模拟器_bochs镜像下载
  13. charles4.0破解和手机抓包
  14. 利用C#实现Pdf转图片
  15. wps计算机里wps云盘图标,我的电脑中的wps网盘图标怎么设置删除
  16. android发送短信验证码并自动获取验证码填充文本框
  17. java-读取Excel文件,自定义读取固定行、列(不区分xls、xlsx)
  18. 微信授权登陆【yixiyun】
  19. 中国 98 家央企及下属 409 家上市企业全名单( 2023 最新版)
  20. 量子力学在计算机上的应用论文,《浅谈量子力学的发展与利用》-毕业论文.docx...

热门文章

  1. 简单理解LSTM神经网络
  2. html天天生鲜项目,day54-天天生鲜项目订单管理
  3. node ajax实现登录注册,nodejs实现简易登录注册
  4. vivado基本使用流程(详细版,一步步跟着来一定能成功)
  5. codeup《算法笔记》题目索引(题目+解析+代码)
  6. 2022华为杯数学建模A题思路代码
  7. 济南遥墙机场停5天怎么收费,济南遥墙国际机场停车场收费标准
  8. docker镜像命令
  9. PCB特征阻抗计算工具——Polar SI9000软件下载与安装教程
  10. HarmonyOS Hi3518系列 环境篇②——HiTool工具烧写运行