對於早期Servlet內核你清楚嗎,這些基礎的東西,不能忘哦

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來生成 圖片驗證碼的,防止用戶進行暴力破解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章