一、 什么是servlet?
Servlet ,全称 Java Servlet. 是由Java编写的服务端程序。其主要功能在于交互地浏览和修改数据,生成动态web内容。 狭义的servlet是指Java实现的一个接口,广义的servlet是指任何实现了这个servlet的类,一般情况下人们将servlet理解为后者 wikipedia
二、servlet生命周期
wikipedia
1 | 当servlet被部署在应用服务器中以后,由容器控制servlet的生命周期。 |
1 | serlvet的生命周期是由被部署到的容器所控制的,当一个请求映射到一个servlet的时候,容器将会执行以下几步 |
三、 servlet是否是线程安全的?
默认情况下,servlet不是线程安全的,尽管在servlet引擎中只有一份servlet的拷贝,但是一个serlvet实例中的方法在同一时间是会可以执行数次的,直至达到内存限制,并且每次执行都是不同的线程来执行。因为Java编程语言是管理内存的,所以这种对系统资源的高效使用是有风险的。因为servlet实例所拥有的变量在每次引用时是会被传递的,这样就带来不同的线程有可能会覆盖同一块内存区域的副作用。所以为了保证servlet的线程安全,需要做到下面的其中任意一种
- 对所有实例变量的写操作进行同步
- 使用SingleThreadModel创建一个单线程的servlet 不过这样并行度会大大降低,所有传入的请求必须等待有空闲的实例才可以继续执行业务
oracle官网
四、 doGet和doPost有什么区别?
其实就是针对http请求中get和post进行分别处理
其实就是get和post的区别