JavaEE
創新互聯建站長期為上1000家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為閩侯企業提供專業的網站制作、成都做網站,閩侯網站改版等技術服務。擁有十余年豐富建站經驗和眾多成功案例,為您定制開發。HTTP —— HTTP 響應詳解, 構造 HTTP 請求
HTTPS —— HTTPS的加密方式
Tomcat 是一個 HTTP 服務器
HTTP
客戶端, 就是大家平時用到的瀏覽器.
HTTP
服務器, 需要開發實現一個服務器, 搭建網站的 “后端部分”.
開發實現一個服務器, 本質上就是寫個TCP socket
服務器. 但是比較麻煩, 有很多重復性工作.
業界就有一些大佬實現了一些現成的 HTTP 服務器, 我們進行開發網站, 就不必從頭去寫了, 只需要基于這些HTTP
服務器, 進行二次開發即可.
下載Tomcat
簡單介紹
webapps 中放的是我們想要部署的網站
就可以把前端和后端的代碼拷貝到這個目錄中.
每個目錄都可以視為是一個webapp
(網站)
ROOT 目錄
ROOT 目錄里放的就是歡迎頁面
啟動 Tomcat, 雙擊 startup.bat
看到這個信息, 說明啟動成功!
如果有問題, 可以把 bat 拖到 cmd 中運行, 查看報錯信息是什么.
在瀏覽器上輸入127.0.0.1:8080
如果出現這樣的頁面, 說明Tomcat
啟動正常 (Tomcat 默認端口: 8080)
我們寫一個 .html
Document Gujiu ! !
將其移動到 ROOT 中
在 127.0.0.1:8080 后面加上/gujiu.html
這個頁面就是通過Tomcat
這個 http 服務器來獲取到的.
既然都可以雙擊本地打開, 為什么還要通過 Tomcat 折騰一下?
本地打開只能訪問你自己電腦的.
使用
Tomcat
可以通過網絡訪問到別人電腦的網頁.
# 注意事項 #
我們如果把所有文件都直接放到 ROOT 里, 就會弄得很亂, 一般我們都會新建一個文件夾.
將gujiu.html
放到Gujiu
下. 輸入如下地址.
Servlet 就是 Tomcat 給程序員提供的進行二次開發的 API, 學了這些 API 就可以比較方便的寫出一個網站的后端程序了.
動態頁面 vs 靜態頁面
靜態頁面
: 頁面的內容, 是固定 (以文件的形式, 靜靜的躺在你的硬盤的指定目錄中).
無論什么時候, 無論誰來訪問,得到的頁面效果, 都一樣.
動態頁面
: 不是一個真實的硬盤的文件, 而是通過代碼在內存中構造出一個 “虛擬的資源”.
就可以根據你訪問的時間的不同, 訪問的人的不同, 訪問時帶有的參數不同, 就可以構造出不同的頁面來了.
靜態頁面部分拷貝到webapps
里就行; 動態頁面就需要基于servlet
.
寫一個Servlet
的hello world
這里和 JDBC 差不多, 都是固定套路
創建一個maven
項目
目錄結構
小知識:
maven 是一個構建工具 (build,包括不限于: 編譯, 打包, 部署)
#
之前寫代碼,都是直接在 idea 中, 點擊main
方法前的 三角號, 就自動編譯程序
#
這種方式針對一些比較簡單的程序還好, 如果是一些更復雜的程序, 尤其是有多個模塊, 并且互相依賴. 這時我們直接點運行就沒有那么容易了.
比如 A 依賴 B, B 依賴 C.
此時你要想編譯運行 A, 就必須先編譯運行 B, 要想編譯運行 B, 就需要先編譯運行 C.
#
構建工具, 就是為了解決這個問題, 使我們在開發比較復雜的項目的時候, 也可以比較方便的進行編譯和打包操作
#
我們這里使用 maven 主要就是借助maven
進行編譯, 打包, 管理依賴…
Servlet
不是 Java 標準庫自帶的, 要想使用, 就需要額外的下載安裝, 并引入到項目中.
maven
的一個核心功能, 就是能夠自動的管理依賴, 就會把咱們使用的庫中依賴的東西, 自動從中央倉庫中下載下來
中央倉庫鏈接
選擇3.1.0
版本.
# 注意 #
servlet 3.1.0 和 Tomcat 8.5 和 jdk 8 是配套的.
選擇 maven 把 maven 中的這段內容復制出來, 然后粘貼到pom.xml
的
復制的內容, 粘貼到\
這個標簽中
javax.servlet javax.servlet-api 3.1.0 provided
# 注意事項 #
拷貝過來, 可能是標紅的.
當我們把他拷貝過來,idea
就會自動根據你這里寫的內容, 從中央倉庫上下載依賴.
在這個依賴下載好之前, 這里都是標紅的, 在下載過程中, 我們需要耐心等待.
如果等了很久, 還是標紅的, 就可以嘗試手動刷新一下. (在 idea 的最右側邊邊上, 有一個 maven, 鼠標點擊 maven )
雖然maven
已經給我們創建出了一些目錄了, 但是還不夠
我們需要搞得是一個 符合 Tomcat 要求的目錄結果
我們還需要再web.xml
中填入下面這段代碼
Archetype Created Web Application
# 注意事項 #
webapp 目錄就是未來部署到 Tomcat 中的一個重要的目錄. 當前我們可以往 webapp 中放一些靜態資源, 比如 html , css 等.
在這個目錄中還有一個重要的文件 web.xml. Tomcat 找到這個文件才能正確處理 webapp 中的動態資源.
這里的作用: 驗證 + 補全
這里標紅, 只是影響到 idea 對于 web.xml 的驗證和補全
可以
alt + enter
使其不再標紅.
#
要把代碼放到 java 目錄下, 我們創建一個helloServlet
#
我們先要extends HttpServlet
這個類, 但是這里有時會標紅.
這個類來自于, 剛才通過 maven 下載的那個servlet
的jar
包. 報紅的原因可能有:
doGet解決方法: 點擊刷新按鈕嘗試
#
重寫doGet
方法
public class helloServlet extends HttpServlet {@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//注意, 自動生成的這個調用父類方法的代碼, 一定一定要注釋掉, 不然會出問題!!
//super.doGet(req, resp);
}
}
doGet 方法 就是HttpServlet
父類里已經包含的方法了, 此處是需要 Overide 父類的方法
doGet
表示: 當前 Tomcat 在收到某些GET
請求的時候, 會調用這個 doGet 方法.
此處doGet
做的工作, 就是 “根據請求, 計算響應”.
doGet 就需要根據 req 里的一些數據 + 業務邏輯構造生成一個完整的 resp 對象.
再進一步,tomcat
就把 resp 對象轉成一個 HTTP 響應報文.
典型的服務器要做三件事:
- 讀取請求并解析
- 根據請求計算響應
- 把響應結果返回給客戶端
1 和 3 都是固定的套路, 2 則是我們需要實現的業務邏輯 (可能比較簡單, 也可能非常復雜)
#
編寫如下代碼
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 注意, 自動生成的這個調用父類方法的代碼, 一定一定要注釋掉或刪掉
// super.doGet(req, resp);
// 是 Tomcat 這邊打印這個日志
System.out.println("hello");
// 還可以給客戶端返回這個 hello
resp.getWriter().write("hello");
}
}
當我們發送的請求是GET
路徑是/hello
.此時 Tomcat 才會調用到這里的 doGet 方法.
Tomcat 可以讓你關聯上很多路徑.
可以給請求中的不同路徑, 關聯上不同的類, 也就是執行了不同的方法了.
小知識:
/hello 其實就是一個 “虛擬的資源”.
硬盤上目錄中是沒有這個 /hello 文件,瀏覽器訪問這個路徑的資源, 就通過 servlet 代碼, 直接返回了一個 hello 字符串.
當前寫的 Servlet 代碼, 沒有 main 方法. 我們要想程序運行, 就需要 打包 + 部署程序.
單擊右側的 maven, 雙擊package
打包.
打包:
- 把缺失的依賴給下載好
- 然后編譯所有 .java 文件得到一堆 .class 文件
- 再把這些 .class 給打包到一個壓縮包中
當我們看到BUILD SUCCESS
這個提示, 就是打包成功了.
這時我們可以看到這里多了一個 .jar 文件.
# 注意事項 #
雖然我們打出來 jar 包, 但是Tomcat
不認! !
Tomcat 要求的壓縮包格式, 是 war 包
最主要的區別, war 包, 會把整個 webapp 目錄都給打進去, 包括web.xml
,以及未來放的一些靜態html, css ...
這時我們需要修改 pom.xml , 在
war // war 包的名字helloServlet
這時再次雙擊package
, 打包完畢后, 我們再看左側, 多了一個helloServlet.war
文件
把war
包, 拷貝到 Tomcat 的webapps
中.
重新啟動Tomcat
服務器. Tomcat 就會加載這里的war
包.
我們看到這里多了一個helloServlet
文件. 加載操作就是把這個 war 解壓縮成目錄了.
通過瀏覽器, 構造一個HTTP 請求, 訪問 Tomcat 服務器.
我們打開一個瀏覽器, 在地址欄上輸入http://127.0.0.1:8080/helloServlet/hello
此時在瀏覽器的頁面上, 和 Tomcat 日志中, 都出現了 hello 這個字符串.
- 第一級目錄來指定 webapps 中的目錄
- 第二級目錄來指定 第一級目錄下的文件
瀏覽器發送一個 HTTP 請求給 Tomcat 服務器. (GET /helloServlet/hello
)
Tomcat
服務器就會解析請求
獲取到 URL 中的第一級路徑,/helloServlet
確定一個webapp
Tomcat 找到 helloServlet 目錄之后, 就會加載里面的類, 尤其是重點去識別出@WebServlet
注解修飾的類
就會取出 URL 中的第二級路徑/hello
.
然后就在 @WebServlet 注釋中, 找到名字為 /hello 的類.
找到類之后, 創建實例 (只會創建一次. 如果之前創建過了, 就直接復用上次的實例)
再解析出 HTTP 請求的方法 “GET
”, 取出 GET 之后, 就可以根據 HTTP 方法來調用對應的 servlet 中的方法:
GET
請求就調用 doGet 方法
POST
請求就調用 doPost 方法
PUT
請求就調用 doPut 方法
DELETE
請求就調用 doDelete 方法 …
同時 Tomcat 還會構造出HttpServletRequest
對象和HttpServletResponse
對象
以上就是今天要講的內容了,希望對大家有所幫助,如果有問題歡迎評論指出,會積極改正!!
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
標題名稱:Servlet——Tomcat,初學Servlet程序-創新互聯
鏈接分享:http://vcdvsql.cn/article44/cedsee.html
成都網站建設公司_創新互聯,為您提供定制開發、電子商務、網站建設、ChatGPT、域名注冊、全網營銷推廣
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯