日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA Web学习篇--Servlet

發布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA Web学习篇--Servlet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


Servlet由來

?

???? 做過BS項目的人都知道,瀏覽器可以依據HTML靜態標記語言來顯示各式各樣的網頁。可是假設我們須要在網頁上完畢一些業務邏輯:比方登陸驗證。或者說網頁顯示的內容在server的數據庫中。假設是這樣,除了負責顯示的HTML標記之外,必須還要有完畢這些業務功能的代碼存在。這樣的網頁我們就叫做動態網頁。

?????對于靜態網頁而言,server上存在的是一個個純HTML文件。當client瀏覽器發出HTTP請求時,server能夠依據請求的URL找到相應的HTML文件,并將HTML代碼返回給client瀏覽器。

? ? ?可是對于動態網頁,server上除了找到須要顯示的HTML標記外,還必須運行所須要的業務邏輯,然后將業務邏輯運算后的結果和須要顯示的HTML標記一起生成新的HTML代碼。最后將新的帶有業務邏輯運算結果的HTML代碼返回給client。

?

為了實現動態網頁的目標,JavaServlet技術因應而生,它可以以一種可移植的方法來提供動態的、面向用戶的內容。

?

簡單來說:

servlet是在server上執行的小程序。Servlet的主要功能在于交互式地瀏覽和改動數據,生成動態Web內容,是為web開發服務的。

?

CGI與Servlet對照

?

開始的時候,公共網關接口(CommonGateway Interface,CGI)腳本是生成動態內容的主要技術。盡管使用得非常廣泛,但CGI腳本技術有非常多的缺陷,這包含平臺相關性和缺乏可擴展性。為了避免這些局限性,JavaServlet技術因應而生,它可以以一種可移植的方法來提供動態的、面向用戶的內容。處理用戶請求。

?

?????對照一:當用戶瀏覽器發出一個Http/CGI的請求,或者說調用一個CGI程序的時候,server端就要新啟用一個進程(并且是每次都要調用),調用CGI程序越多(特別是訪問量高的時候),就要消耗系統越多的處理時間,僅僅剩下越來越少的系統資源,對于用戶來說,僅僅能是漫長的等待server端的返回頁面了,這對于電子商務激烈發展的今天來說,不能不說是一種技術上的遺憾。

  而Servlet充分發揮了server端的資源并高效的利用。每次調用Servlet時并非新啟用一個進程,而是在一個Webserver的進程中共享和分離線程,而線程最大的優點在于能夠共享一個數據源,使系統資源被有效利用。故servlet不是線程安全的,單實例多線程的


  對照二:傳統的CGI程序,不具備平臺無關性特征,系統環境發生變化,CGI程序就要癱瘓,而Servlet具備Java的平臺無關性,在系統開發過程中保持了系統的可擴展性、高效性。


  對照三:傳統技術中,一般大都為二層的系統架構,即Webserver+數據庫server,導致站點訪問量大的時候,無法克服CGI程序與數據庫建立連接時速度慢的瓶頸,從而死機、數據庫死鎖現象頻繁發生。而我們的Servlet有連接池的概念,它能夠利用多線程的長處,在系統緩存中事先建立好若干與數據庫的連接,到時候若想和數據庫打交道能夠隨時跟系統"要"一個連接就可以,反應速度可想而知。

?

?

Servlet的執行過程

?  

? ? ?⒈ client發送請求至server端;

?  ⒉server端依據web.xml文件里的Servlet相關配置信息,將client請求轉發到對應的Servlet

? ? ?⒊ Servlet引擎調用Service()方法,依據request對象中封裝的用戶請求與數據庫進行交互,返回數據之后,Servlet會將返回的數據封裝到response對象中;

?  ⒋ Servlet生成響應內容并將其傳給server。響應內容動態生成,通常取決于client的請求 

⒌ server將響應返回給client


?


Servlet生命周期


? ??

?

1) 載入和實例化;在第一次請求Servlet時,Servlet容器將會創建Servlet實例;

2)?初始化;Servlet容器載入完畢Servlet之后,必須進行初始化,此時,init方法將被調用;

3)?Servlet初始化之后,就處于響應請求的就緒狀態,此時如有client請求發送,就會調用Servlet實例的service()方法,而且依據用戶的請求方式,調用doPost或者doGet方法;

4) 最后,Servlet容器負責將Servlet實例進行銷毀,調用destroy方法實現;

  對于很多其它的client請求,Server創建新的請求和響應對象,仍然激活此Servlet的service()方法,將這兩個對象作為參數傳遞給它。如此反復以上的循環,但無需再次調用init()方法。

????一般Servlet僅僅初始化一次(僅僅有一個對象),當Server不再須要Servlet時(一般當Server關閉時),Server調用Servlet的Destroy()方法。

?

實例解析:


? ? ? ? ? ? ?


html代碼--client瀏覽器

<span style="font-family:KaiTi_GB2312;"><html><head><title>學生管理</title></head><body><h1>依據出生日期段查詢</h1><form action="queryStudentServlet">出生日期 :<input type="text" name="beginDate">至<input type="text" name="endDate"><input type="submit" value="查詢學生"></form></body> </html> </span>
配置文件

<span style="font-family:KaiTi_GB2312;"><servlet><servlet-name>StudentMgrServlet</servlet-name><servlet-class>StudentServlet</servlet-class></servlet><servlet-mapping><servlet-name>StudentMgrServlet</servlet-name><url-pattern>/queryStudentServlet</url-pattern></servlet-mapping> </span>

servlet處理過程

<span style="font-family:KaiTi_GB2312;"> import java.text.*;import java.util.*;import java.io.*;import javax.servlet.http.*;import javax.servlet.*;import com.bjpowernode.exam.model.*;import com.bjpowernode.exam.manager.*;public class StudentServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String sBeginDate = request.getParameter("beginDate");String sEndDate = request.getParameter("endDate");Date beginDate = new Date();Date endDate = new Date();try {beginDate = new SimpleDateFormat("yyyy-MM-dd").parse(sBeginDate);endDate = new SimpleDateFormat("yyyy-MM-dd").parse(sEndDate);}catch(Exception e) {e.printStackTrace(); } StudentManager studentManager = new StudentManagerImpl();List<Student> studentList = studentManager.findStudentList(beginDate, endDate);//表格省略…}} </span>

Servlet怎樣同一時候處理多個請求?


? ? ? ?Servlet採用多線程來處理多個請求的同一時候訪問。Servlet容器通過線程池來管理維護服務請求。所謂線程池,相當于數據庫連接池,實際上是等待運行代碼的一組線程,叫做工作者線程。Servlet容器通過一個調度線程來管理工作者線程。
· 當容器收到一個Servlet的訪問請求,調度者線程就從線程池中選出一個工作者線程,將用戶請求傳遞給該線程,然后由該線程處理Servlet的service()方法;
· 當這個線程在運行的時候,容器收到一個新的請求,調度者線程再次從線程池中選出一個新的工作者線程;
· 當容器同一時候收到對同一個Servlet的多個請求時,那么Servlet的service方法將在多線程中并發運行。


注:

? ? 1.Servlet容器默認採用單實例多線程的方式來處理請求。這樣降低了產生Servlet實例的開銷,提升了對請求的響應時間;
? ? 2.對于Tomcat容器來講,能夠在其server.xml中通過<Connector>中設置線程池中的線程數目。


怎樣開發線程安全的Servlet?


? ? ? ?Servlet容器採用多線程來處理請求,提高性能的同一時候也造成了線程安全問題。要開發線程安全的Servlet應該從一下幾個方面進行:
1. ?變量的線程安全; 多線程并不共享局部變量,所以我們要盡可能的在Servlet中使用局部變量;
2. ?代碼塊的線程安全; 使用同步塊Synchronized,防止可能調用的代碼塊;可是要注意的是,要盡可能得縮小同步代碼的方范圍,不要在service方法和響應方法上直接使用同步,這會嚴重影響性能。
3. ?屬性的線程安全; ServletContext,HttpSession,ServletRequest對象中屬性;
4. ?使用同步集合; 使用Vector取代ArrayList,使用HashTable取代HashMap;
5. ?不要在Servlet中創建自己的線程來完畢某個功能; Servlet本身就是多線程的,假設再創建新的線程,將會導致線程運行復雜化,出現線程安全問題;
6. ?在多個Servlet中,對外部對象,比方:文件;進行改動操作一定要加鎖,做到相互排斥訪問;



總結:

?

? ? 一個servlet就是Java編程語言中的一個類,它被用來擴展server的性能,server上駐留著能夠通過“請求-響應”編程模型來訪問的應用程序。Servlet通過解析http請求,取得client的參數來進行下一步操作。事實上簡單來說,servlet就是一個控制器,取參數,調用業務邏輯.

? ? 而在.net 中HttpHandler是一個HTTP請求的真正處理中心,也正是在這個HttpHandler容器中,ASP.NET Framework才真正地對client請求的server頁面做出編譯和運行,并將處理過后的信息附加在HTTP請求信息流中再次返回到HttpModule中。




?


轉載于:https://www.cnblogs.com/mfrbuaa/p/3799181.html

總結

以上是生活随笔為你收集整理的JAVA Web学习篇--Servlet的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产经典一区二区三区 | 日本成人一区 | 乱短篇艳辣500篇h文最新章节 | 久久无码视频一区 | 欧美成人午夜剧场 | 国产高潮流白浆喷水视频 | 精品xxx| 亚洲欧美激情在线 | 毛片久久久 | 成人91免费 | a在线观看视频 | 在线免费观看网站入口在哪 | 亚洲精品wwww | 亚洲成av人片在www色猫咪 | 亚洲人成电影一区二区在线 | 男女毛片视频 | 中国美女一级片 | 狠狠干干 | 一区二区久久精品66国产精品 | 欧美贵妇videos办公室 | 亚洲va国产va天堂va久久 | 国产精品视频a | 公侵犯人妻一区二区三区 | 亚洲av成人精品毛片 | av之家在线 | 免费在线观看中文字幕 | 国产成人一区二区三区免费看 | 免费se99se| 国产欧美精品在线 | 丰满人妻在公车被猛烈进入电影 | mm131美女大尺度私密照尤果 | 久久久久久久久影院 | 日韩三级不卡 | 爱久久| 天天摸日日干 | 国产乱人乱偷精品视频 | 免费一级做a爰片久久毛片潮 | 国产精品成人aaaa在线 | 中文字幕乱码一区二区三区 | 涩涩天堂 | 国产中文字幕亚洲 | 天天色小说| 日本xx片| 性欧美丰满熟妇xxxx性仙踪林 | 久久精品蜜桃 | 人乳videos巨大吃奶 | 91最新入口 | 三级视频黄色 | 成人tv| av永久| 国内精品久久久久久 | 日韩成人自拍 | 97超碰人人模人人人爽人人爱 | 精品一区二区三区免费视频 | 亚洲天堂免费视频 | 日本热久久 | 日韩欧美一区二区三区在线 | 福利视频h | 亚洲自拍偷拍欧美 | 亚洲人成在线免费观看 | 日韩亚射吧 | 日韩黄色短视频 | 三年在线观看视频 | 一级黄色大片免费看 | 五月天免费网站 | 综合久久色 | 北条麻妃久久 | 法国空姐在线观看视频 | 国产成人精品毛片 | 久久天堂电影 | 亚洲国产精品无码专区 | 日本大胆裸体做爰视频 | 国产精品一区二区电影 | a级黄色小视频 | a国产在线 | 日韩精品在线观看中文字幕 | 中国一级特黄毛片大片 | 成人精品免费看 | 男人吃奶视频 | 娇妻高潮浓精白浆xxⅹ | 91爱爱爱爱| 吖v在线| 国产爆操视频 | 91视频网页| 91精品视频免费看 | 亚洲激情视频在线 | 中文字幕一区二区三区四区免费看 | 中文字幕超清在线观看 | 黄色男人的天堂 | 国产精品极品白嫩在线 | 国产精品果冻传媒 | 一级特黄色片 | 丰满护士巨好爽好大乳 | 中文天堂在线播放 | 国产精品免费无遮挡无码永久视频 | 欧美黑人又粗又大又爽免费 | japanese国产| 色网网站 | 福利网站在线观看 |