Servlet原理:
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原理:相关推荐
- Servlet学习笔记 Servlet原理
Servlet学习笔记 Servlet原理 一.Servlet基础 1.Servlet执行过程 用户请求一个Servlet,Servlet容器自动构建请求和响应对象,然后执行Servlet的servi ...
- JavaWeb中的Servlet原理是什么?(存库,建议收藏)
Servlet原理 Servlet是由web服务器调用,web服务器在收到浏览器请求之后,经过一系列传输,最后web服务器读取响应信息,将其读取的信息传送到浏览器 Mapping问题: 一个Servl ...
- SERVLET JSP篇-02 HTTP协议、Servlet原理
一.Http协议.HTTPS协议 1.什么是HTTPS HTTPS基于安全套接字层的超文本传输协议,是一个Netscape开发的web协议.即HTTPS=HTTP+SSL,HTTPS在HTTP在HTT ...
- 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用
准备 JDK (配置JDK_HOME\bin 和 CLASSPATH) 注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本) 对于我们新手来说,JD ...
- Servlet 原理
要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力.虽然它们是彼此依存的,但是又 ...
- java servlet原理_java servlet的工作原理是什么?
展开全部 配置:编辑好的servlet源文件并不能响应用户请求,还必须将其编译成class文件,将编译好的class文件放到WEB-INF/classes路径下62616964757a68696461 ...
- 【tomcat】servlet原理及其生命周期
1.什么是servlet? Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序.而这些Servlet都要实现Servlet这个接口.其主要功能 ...
- springboot 自动注入servlet原理
前置内容: servlet的多种注册方式 SpringBoot启用 ServletContainerInitializer ServletContainerInitializer-SPI SPI部分内 ...
- java servlet原理_Java Web 深入分析(8) Servlet工作原理解析
Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态We ...
- Servlet | Servlet原理、开发第一个带有Java小程序Servlet
✅作者简介:一位材料转码农的选手,希望一起努力,一起进步!
最新文章
- matlab 中调用s函数表达式,[求助]S函数中能否调用M函数
- 400 错误,因为url编码问题
- 把原来的所有Blog全部转移过来了:-P
- 解决Office 2016客户端如何同SharePoint Server2016安装在一起
- SpringCloud Consul自定义服务注册
- windows程序消息机制(Winform界面更新有关)
- magento 问题解答 FQA
- 【python】set集合基础与使用
- CSS3 背景起始位置 background-origin属性
- Configure Javadoc and Source Code for JRE in Eclipse JDT
- python语言源程序文件类型_Python语言源程序文件的文件类型是__________。
- bochs镜像java模拟器_bochs镜像下载
- charles4.0破解和手机抓包
- 利用C#实现Pdf转图片
- wps计算机里wps云盘图标,我的电脑中的wps网盘图标怎么设置删除
- android发送短信验证码并自动获取验证码填充文本框
- java-读取Excel文件,自定义读取固定行、列(不区分xls、xlsx)
- 微信授权登陆【yixiyun】
- 中国 98 家央企及下属 409 家上市企业全名单( 2023 最新版)
- 量子力学在计算机上的应用论文,《浅谈量子力学的发展与利用》-毕业论文.docx...