servlet的由來

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

  • 動靜態網頁技術

首先說下訪問網頁的大概過程:

? ? ? ? 你在瀏覽器中輸入網址,按下enter鍵,此時瀏覽器代你做了很多事,簡要說為:將你輸入的這個網址作為目的地參數,向這個參數代表的web服務器發起了HTTP請求,服務器返回一個HTML頁面,瀏覽器將這個頁面呈現給你。

? ? ? ? WEB服務器都遵循HTTP規范,所有瀏覽器、web服務器都實現了HTTP協議規范,而HTTP協議是編程語言無關的,這樣使得可以用MFC編的瀏覽器能訪問Tomcat(由Java開發)的中Java Web應用網頁。

網址你知道了,網頁也顯示了,到底是靜態的還是動態的呢?

用例子好說些,比如歌手大賽:張三、李四、王五、趙六,

現在要展示每個參賽選手的簡歷網頁,

簡歷信息主要包含姓名、靚照、性別、出生年月、身高、體重,特長等信息,

幾個人的信息在報名時已經登記在excel表格中了。

  • 靜態網頁技術的做法:

根據excel表格給每個選手做一個HTML頁面,共有四個網頁存放在web服務器的目錄下,訪問的網址為:

http://www.jianli.com/zhangsan.html

http://www.jianli.com/lisi.html

http://www.jianli.com/wangwu.html

http://www.jianli.com/zhaoliu.html

web服務器根據網址在目錄下找到對應的HTML文件,將其返回給瀏覽器。

有個需求靜態網頁是做不到的:顯示網頁被訪問多少次!不可能每訪問一次改一下這個HTML吧?

  • 動態網頁技術的做法:

web服務器目錄下很可能沒有HTML頁面。

首先訪問網址一般會變成 http://www.jianli.com/geshou?name=xxx

web服務器收到網頁請求后,將請求作為參數調用?幫助程序,幫助程序根據請求中名字的不同,到excel中查出具體信息,組裝成一個HTML頁面返回給服務器,服務器將這個頁面傳給瀏覽器。

就是上面的 ??幫助程序 ?真正實現了動態網頁技術,現今被廣泛使用的“幫助程序”有:

微軟系的 :?asp、aspx;

CGI系的:PHP,Perl,Python

Java系的:Servlet

為什么是servlet

  • Java有兩種實現動態網頁的方式:

1、Java Applet ,在瀏覽器端用Java applet實現,通過applet能夠解釋執行WEB服務器發過來的Java代碼。這樣瀏覽器必須安裝插件,又受限于瀏覽器,所以Java代碼不能太多和太復雜。

2、Server applet ,?WEB服務器不發Java代碼,而去調用基于Java代碼的server端applet,此即為servlet

因為servlet就是運行在web服務器中的普通Java程序,每個人可以隨便寫咯,必然導致混亂,所以出現了servlet規范,規定了WEB服務器對servlet的生命周期的調度:何時調用servlet、怎么調用servlet,何時清理servlet,servlet對請求處理的通用邏輯等。

遵循這個規范的服務器都可以稱之為servlet容器。

servlet規范概要:


  Server創建一個Servlet的實例
  Server調用Servlet的init()方法
  一個客戶端的請求到達Server
  Server創建一個請求對象
  Server創建一個響應對象
  Server激活Servlet的service()方法,傳遞請求和響應對象作為參數?
  service()方法獲得關于請求對象的信息,處理請求,訪問其他資源,獲得需要的信息
  service()方法使用響應對象的方法,將響應傳回Server,最終到達客戶端。
?? ? ??service()方法可能激活其它方法以處理請求,如doGet()或doPost()或程序員自己開發的新的方法。?
  
?? ? ? 對于更多的客戶端請求,Server創建新的請求和響應對象,仍然激活此Servlet的service()方法,將這兩個對象作為參數傳遞給它。如此重復以上的循環,但無需再次調用init()方法。一般Servlet只初始化一次(只有一個對象),當Server不再需要Servlet時(一般當Server關閉時),Server調用Servlet的Destroy()方法

?

初期servlet是在Java代碼中組合拼裝html,大量的out語句

JSP是在HTML中嵌入jsp標簽(Java代碼片段),然后編譯成servlet,

接著出現了更好更快的標簽及編譯技術-struts,

?

后記

做Java web開發最好從基本的servlet寫起,用最原始的servlet開發web應用之后,

再進入各種層面封裝起來的框架的學習和整合會沒那么多霧水,

各種框架出現的大量配置文件和java代碼會弄暈你,

實在是搞不懂干什么用的,為何有這些東西,

這時請回過頭來溫習你最初的servlet項目,或許會有收獲。

?

?

?

轉載于:https://my.oschina.net/jingxing05/blog/750997

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542519.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542519.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542519.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php header 文件大小,php獲取遠程文件大小及信息的函數(head_php

php獲取遠程文件大小及信息的函數(header頭信息獲取)阿里西西Alixixi.com開發團隊在做一個客戶系統時,需要做遠程下載的功能,并實時顯示進度條效果。所以,需要預先讀取遠程文件的大小信息,然后做為實時下載進度條的參數。功能函數…

Java ObjectInputStream readUnsignedShort()方法(帶示例)

ObjectInputStream類readUnsignedShort()方法 (ObjectInputStream Class readUnsignedShort() method) readUnsignedShort() method is available in java.io package. readUnsignedShort()方法在java.io包中可用。 readUnsignedShort() method is used to read 2 bytes (i.e. …

python中info的用法_Python pandas.DataFrame.info函數方法的使用

DataFrame.info(self, verboseNone, bufNone, max_colsNone, memory_usageNone, null_countsNone) [source] 打印DataFrame的簡要摘要。 此方法顯示有關DataFrame的信息,包括索引dtype和列dtype,非空值和內存使用情況。 參數:verbose &#x…

第四次作業 孫保平034 李路平029

用C編寫一個學生成績管理系統 1、可以實現以下功能&#xff1a; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; 2、用鏈表存儲信息 * 程序頭部的注釋結束 3、約定的規范&#xff1a; 1界面設計簡介&#xff0c;人性化…

php serialize error at offset,PHP Notice: unserialize(): Error at offset XX of XX bytes

之前同事在本地開發的時候&#xff0c;出現一個錯誤&#xff0c;如下圖所示&#xff1a;字面意思就是反序列化錯誤&#xff0c;由此bug引申出來序列化和反序列化得應用&#xff0c;以及php array當key為string類型的數字值時&#xff0c;會發生什么情形。先來看序列化$str [1 …

Java ClassLoader setClassAssertionStatus()方法與示例

ClassLoader類setClassAssertionStatus()方法 (ClassLoader Class setClassAssertionStatus() method) setClassAssertionStatus() method is available in java.lang package. setClassAssertionStatus()方法在java.lang包中可用。 setClassAssertionStatus() method is used …

python怎么變各種顏色_python – 如何淡化顏色

有很多方法可以做到這一點.您如何選擇這取決于您是否重視速度和簡單性或感知均勻性.如果你需要它是真正統一的,你需要用顏色配置文件定義RGB顏色,你需要配置文件的原色,這樣你就可以轉換為XYZ,然后轉換到LAB,你可以操作L通道. 大多數情況下,您不需要這樣做,而是可以使用像Photo…

informatica中元數據管理

摘自&#xff1a; http://blog.itpub.net/28690368/viewspace-766528/ informaica是一個很強大的ETL工具&#xff0c;WORKFLOW MANAGER負責對ETL調度流程進行設計與管理和執行&#xff0c;informatica在資料庫中提供以下表來存儲調動流程的相關信息&#xff0c;以便WORKFLOW …

yii+php+當前目錄,Yii應用的目錄結構和入口腳本

以下是一個通過高級模版安裝后典型的Yii應用的目錄結構&#xff1a;~~~.├── backend├── common├── console├── environments├── frontend├── nbproject├── tests├── vendor├── composer.json├── composer.lock├── init├── init.bat├── …

8086 尋址方式_8086微處理器的不同尋址模式

8086 尋址方式Introduction: 介紹&#xff1a; Addressing mode tells us what is the type of the operand and the way they are accessed from the memory for execution of an instruction and how to fetch particular instruction from the memory. There are mainly 8 …

決策樹的value是什么意思_從零開始的機器學習實用指南(六):決策樹

類似SVM&#xff0c;決策樹也是非常多功能的機器學習算法&#xff0c;可以分類&#xff0c;回歸&#xff0c;甚至可以完成多輸出的任務&#xff0c;能夠擬合復雜的數據集&#xff08;比如第二章的房價預測例子&#xff0c;雖然是過擬合了。&#xff09;決策樹也是很多集成學習的…

Hive中生成隨機唯一標識ID的方法

2019獨角獸企業重金招聘Python工程師標準>>> HIVE中處理的數據往往比較多&#xff0c;在處理數據的時候希望給處理得到的數據一個ID標識&#xff0c;這時候可以用到UUID。 UUID的算法的核心思想是結合機器的網卡、當地時間、一個隨即數來生成UUID。從理論上講&#…

php從網頁獲得數據,php根據URL獲得網頁內容

php 中根據url來獲得網頁內容非常的方便&#xff0c;可以通過系統內置函數file_get_contents(),傳入url,即可返回網頁的內容&#xff0c;比如獲得百度首頁的內容代碼為&#xff1a;$html file_get_contents(http://www.baidu.com/);echo $html;就可以顯示出百度首頁的內容&…

2020知道python語言應用答案_2020知到Python語言應用答案章節期末答案

組合管理理論最早由哈維馬科維茲于1962年系統的提出&#xff0c;他開創了對投資進行整體管理的先 公司型基金和契約型基金的區別&#xff0c;下列不包括&#xff08;&#xff09;。 A&#xff0e;資金的性質B&#xff0e;基金的營運依據C&#xff0e;基 我國&#xff08;&#…

如何在Bootstrap中使用Jumbotron和頁面標頭類?

Introduction 介紹 In the previous article, we have learned how Responsive column, Nesting Columns and offset Columns work and how to use them? I hope now, you all are comfortable with the grid system; what is it, how to use it and how we can use it for c…

python中的數字類型格式與運算,python數字數據類型

python數字數據類型1. 數字在我們很小的時候&#xff0c;父母便開始教我們數數&#xff0c;從1數到10&#xff0c;聰明的孩子可以數的更多。python支持3中數值類型整型(int)&#xff0c;通常稱之為整型或整數&#xff0c;這個概念與我們小學時學過的整數是相同的&#xff0c;py…

getprocaddress得到為0_基于ZU+系列MPSoC芯片的USB3.0/2.0接口硬件設計

本文主要介紹Zynq UltraScale MPSoC系列芯片的USB3.0/2.0接口硬件設計。ZU系列MPSoC要實現USB3.0/2.0的全部功能&#xff0c;需要同時使用MIO和GTR。因為GTR接口中的USB接口只支持USB3.0&#xff0c;對USB2.0的支持需要通過MIO接口外接USB PHY實現。ZU系列MPSoC包括兩個USB接口…

如何設置單詞第一個字母大寫_大寫一行中每個單詞的第一個和最后一個字母

如何設置單詞第一個字母大寫Problem statement: 問題陳述&#xff1a; Given an input line, capitalize first and last letter of each word in the given line. Its provided that the input line is in lowercase. 給定輸入行&#xff0c; 將給定行中每個單詞的第一個和最…

php如何編造簡歷,在簡歷里編造內容需要注意哪些問題?

在個人簡歷里編造內容可得有一定依據才行&#xff0c;總得為自己后期做個準備工作是不是&#xff1f;你編造的東西不只是給企業看一看而已&#xff0c;企業還會對這些內容作出進一步的判斷&#xff0c;并且可能就其對你進行提問&#xff0c;如果你答不出來而曝光自己是在欺騙企…

Java LinkedList公共對象pollLast()方法(帶示例)

LinkedList公共對象pollLast()方法 (LinkedList public Object pollLast() method) This method is available in package java.util.LinkedList.pollLast(). 軟件包java.util.LinkedList.pollLast()中提供了此方法。 This method is used to retrieves the last or ending ele…