Servlet 概述
2023-03-14 10:22:04 时间
Servlet是一个web容器,我们通常用的servlet是httpservlet,而httpservlet又是继承于genericservlet,而genericservlet又实现了servlet接口
servlet的生命周期是:先进行实例化,然后是初始化,然后是提高服务,然后销毁,最后不可用,在这五个生命周期,其中,初始化是调用的init方法,这个方法只有一个,而提高服务的时候调用的是service方法,而我们具体在我们所写的这个方法中,因为我们继承了httpservlet,其实就是对应了doGet(),doPost(),这种方法,然后据我了解,servlet是单例的。非线程安全的,我们通常有一下几种方案来解决:
第一种,继承SingleThreadModel但是这样每次都会创建一个新的servlet实例,但这样消耗服务器的内存,降低了性能,并且这个接口现在已经过时了,不推荐使用。
第二种:我们尽量避免使用全局变量,就我个人而言,我比较喜欢使用这种方法。
第三种,我们可以通过使用ThreadLocal, 内部结构是一个Map结构,用当前线程作为key,他会创建多个副本。get,set方法
第四种,我们当然还可以来加锁,进行解决线程问题。
而且我还知道,向我们这种常用的MVC框架,struts1,spring这些MVC框架,都是基于servlet发展而来的,就比如struts1 的核心总控制器是ActionServlet,而springMVC的前端总控制器是dispatchServlet,在项目我们曾经用serlet来生成 图片验证码的,防止用户进行暴力破解
相关文章
- 区块链在"数据为王"的时代扮演了什么角色?
- 通过 SSH 在远程 Linux 系统上执行命令
- 详解数据管理发展的五个阶段
- 远程医疗:优势、前景和现有IT解决方案
- 「Spring」认证安全架构指南
- 确保企业大数据安全的五种方法
- HDFS 为何在大数据领域经久不衰?
- OpenHarmony BLE低功耗蓝牙
- Ubuntu 现支持暂时 / 永久禁用 snap 软件包自动更新
- 适用于 Linux 的 八 个文件备份应用程序
- 浅谈 Function Programing 编程范式
- 为什么企业必须采用大数据战略?
- Linux 中如何将输出和错误重定向到 /dev/null
- Linux系统nfs共享文件夹的配置
- 携程基于 GraphQL 的前端 BFF 服务开发实践
- 初学者需掌握的12条基本 Linux 命令
- OpenHarmony集成OCR三方库实现文字提取
- 从Go程序第一行代码,到在 K8s 上运行,要经历多少步?
- Fedora Linux 37 发布
- Linux 中的相对路径和绝对路径有什么区别?