当前位置: 首页 > news >正文

建设网站的五个步骤上海网站seo诊断

建设网站的五个步骤,上海网站seo诊断,卖汽车的网站怎么做的吗,怎么做垂直门户网站Servlet的生命周期有四个阶段:加载并实例化、初始化、请求处理、销毁。主要涉及到的方法有init、service、doGet、doPost、destory等 加载并实例化 Servlet容器负责加载和实例化Servelt。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一…

  Servlet的生命周期有四个阶段:加载并实例化、初始化、请求处理、销毁。主要涉及到的方法有init、service、doGet、doPost、destory等

加载并实例化

 Servlet容器负责加载和实例化Servelt。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。当Servlet容器启动后,Servlet通过类加载器来加载Servlet类,加载完成后再new一个Servlet对象来完成实例化。

Servlet 生命周期

Servlet在服务器里是单例的,是

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

  • Servlet 初始化后调用 init () 方法。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 销毁前调用 destroy() 方法。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

现在让我们详细讨论生命周期的方法。

init() 方法

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。

Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。

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

init 方法的定义如下:

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

service() 方法

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

下面是该方法的特征:

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

service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

doGet() 和 doPost() 方法是每次服务请求中最常用的方法。下面是这两种方法的特征。

doGet() 方法

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

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

doPost() 方法

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

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

destroy() 方法

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

在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:

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

线程安全问题

 Servlet容器通过维护一个线程池来处理多个请求,线程池中维护的是一组工作者线程(Worker Thread)。Servlet容器通过一个调度线程(Dispatcher Thread)来调度线程池中的线程。

当客户端的servlet请求到来时,调度线程会从线程池中选出一个工作者线程并将请求传递给该线程,该线程就会执行对应servlet实例的service方法。同样,当客户端发起另一个servlet请求时,调度线程会从线程池中选出另一个线程去执行servlet实例的service方法。Servlet容器并不关心这些线程访问的是同一个servlet还是不同的servlet,当多个线程访问同一个servlet时,该servlet实例的service方法将在多个线性中并发执行

 简单的来说就是在多个请求下访问的是同一个Servlet实例对象

所以,Servlet对象是单实例多线程,Servlet不是线程安全的

举个例子

public class aaaServlet extends HttpServlet{private static final long serialVersionUID = 1L;private String username1 = null;//实例变量@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{username1 = request.getParameter("username1");String username2 = request.getParameter("username2");//局部变量}
}

username1则是共享变量,多个线程会同时访问该变量,是线程不安全的。

username2是局部变量,不管多少个线程同时访问,都是线程安全的

架构图

下图显示了一个典型的 Servlet 生命周期方案。

  • 第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。
  • Servlet 容器在调用 service() 方法之前加载 Servlet。
  • 然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。

 

参考:

Servlet生命周期以及线程安全问题_servlet线程安全问题

Servlet 生命周期 | 菜鸟教程

http://www.zhongyajixie.com/news/24539.html

相关文章:

  • 网站名重复做竞价推广大概多少钱
  • 建设银行网络学习网站今日军事新闻头条新闻
  • 商贸网站百度指数搜索榜度指数
  • 企业网站备案域名可以用个人的专门看网站的浏览器
  • dw怎么做动态网站湖北seo
  • 自己电脑怎么做web网站百度指数怎么看
  • 成都企业网站建设公司优化设计六年级上册语文答案
  • 微信微网站开发教程seo收费标准
  • 社保网站做员工用工备案网络营销方案的范文
  • 新兴网站建设淘宝宝贝排名查询
  • 网上做问卷调查赚钱哪些网站好互联网推广平台
  • 建设网站用什么语言编写农产品网络营销方案
  • 怎么给网站 做排名云盘搜索
  • 上海广告公司网站制作江阴网站制作公司
  • 国内常见响应式网站合肥最新消息今天
  • 温州二井建设有限公司网站今日关键词
  • 沙洋县住房和城乡建设局网站神马网站快速排名软件
  • 南昌做网站哪家公司比较好大数据营销策略有哪些
  • 自己网站如何做关键词排名靠前关键词seo排名公司
  • 当阳建设中学网站周口seo推广
  • 设计网站怎么做2022年新闻热点事件
  • 公司做网站需要哪些手续凡科网
  • 专做装修的网站seo搜索引擎优化人才
  • 手机网站违规禁止访问怎么办百度人工智能开放平台
  • 网站怎么添加百度地图以图搜图
  • 妈妈网站源码青岛seo霸屏
  • 宣传旅游网站建设的观点是什么网络营销讲师
  • 公司设计网站多少钱seo的搜索排名影响因素有哪些
  • wordpress强制性httpsseo平台代理
  • 沈阳做网站的公司排名百度高级搜索网址