一. 什么是Servlet
servlet是一種實現(xiàn)動態(tài)頁面所需的技術, 是一組Tomcat提供給程序員的API,幫助程序員高效開發(fā)的一個web app
二. 如何利用Tomcat部署war包
1. 創(chuàng)建一個maven項目
使用idea創(chuàng)建一個maven項目
只需要填寫好存放位置, 并選擇Maven項目即可. Name選項可根據(jù)自己需要填寫
創(chuàng)建過后進入idea, 首次創(chuàng)建時, 會有一個加載過程, 稍等一會兒即可, 完成后會自動生成一個pom.xml文件
2. 引入依賴
進入中央倉庫(中央倉庫首頁地址), 在搜索欄進行搜索servlet, 選擇 Java Servlet API ,即可到達以下界面選擇自己需要的版本號(Servlet版本號必須和Tomcat匹配)進行下載即可(對應servlet和Tomcat查詢地址)
點擊下載對應版本號進入該頁面
選擇Maven對話框, 將下面maven下面藍色對話框中的內容復制到pom.xml文件中
輸入 dependencies標簽, 將上述復制內容粘貼到該標簽內引入依賴. 首次引入時, 框內文字有些地方在idea上是紅色的, 此時idea會自動將該依賴對應的jar包下載到本地, 等待下載完成刷新就不紅了. 此時, 基本上我們的引入servlet就算完成了
除了將maven框內的內容復制到pom.xml文件中, 還可以選擇下載對應的jar包, 然后將其拖拽到idea中即可
3. 創(chuàng)建目錄
當上述都完成以后, 在idea項目欄中可以看到如下幾個包
src包 : 代表源代碼所在目錄
main/java : 表示源代碼的根目錄, 后續(xù)創(chuàng)建的.java文件都會在該目錄中
main/resources : 表示項目的一些資源文件所在目錄
test/java : 表示測試代碼的根目錄
除了上述這些創(chuàng)建maven項目過后本身就有的文件, 還需要自身創(chuàng)建幾個文件
1.創(chuàng)建webapp文件
注意一定是在main目錄下創(chuàng)建一個名為 webapp 的目錄
2.創(chuàng)建web.xml
先在 webapp 目錄下創(chuàng)建一個 WEB-INF 目錄
接著在 創(chuàng)建的 WEB-INF 目錄下創(chuàng)建一個 web.xml 文件
完成過后, 在項目欄中便有了如下目錄關系
3.編寫 web.xml 文件
在web.xml 文件中直接粘貼以下代碼, 可能會有紅色報錯, 此處并非代碼錯誤, 而是ieda對于除java格式外的其他檢測并不一定十分準確, 可以嘗試利用ctrl + enter 處理報錯, 不處理也可以.
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
4. 編寫代碼
在main/java下創(chuàng)建一個java類并繼承 HttpServlet, 重寫doGet方法.
@WebServlet("/hello")
// 父類中已經有了doGet. 此處希望用子類代替父類的
public class HolleServlet extends HttpServlet {
@Override
// 由Tomcat來自動調用
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 父類的doGet方法只是返回一個錯誤頁面 需要注釋掉
//super.doGet(req, resp);
System.out.println("hello world");
// resp.getWriter()返回的是一個PrintWriter,這是一個打印輸出流
// resp.getWriter().write 只能打印文本輸出格式(包括標簽), 但不可以打印對象
resp.getWriter().write("hello");
}
}
需要注意的事以下幾點:
1.在這個類上方加上@WebServlet(“/hello”) 注解 : 表示Tomcat收到的請求中, 只有路徑為/hello的請求才會去調用這個類的代碼 (該注解必須加, 才能關聯(lián)一個路徑)
2.重寫doGet方法(不一定為doGet方法, 需要構造什么請求就重寫什么) , req表示收到的HTTP請求, resp表示要構造的HTTP響應. 當Tomcat收到Get請求時, 則會調用該方法.
3.HttpServletRequest 表示 HTTP 請求. Tomcat 按照 HTTP 請求的格式把 字符串 格式的請求轉成了一個HttpServletRequest 對象. 后續(xù)想獲取請求中的信息(方法, url, header, body 等) 都是通過這個對象來獲取.
4.HttpServletResponse 表示 HTTP 響應. 代碼中把響應對象構造好(構造響應的狀態(tài)碼, header, body 等)
5.resp.getWriter() 會獲取到一個流對象, 通過這個流對象就可以寫入一些數(shù)據(jù), 寫入的數(shù)據(jù)會被構造成一個 HTTP 響應的 body 部分, Tomcat 會把整個響應轉成字符串, 通過 socket 寫回給瀏覽器.
5. 打包程序
使用maven窗口進行打包
找到里面的打包功能雙擊即可
需要注意的是, 當我們此時直接點擊打包, 生成默認是一個名稱復雜的 jar 包, 但是 Tomcat 認的是 war 包, 因此 我們需要修改一些 pom.xml 文件, 讓其默認打包為一個自命名的 war包.
通過 packaging 標簽表明打包形式, finalName標簽表明 war 包名稱. 完成后, 重新點擊打包此時就可以獲得一個自命名的 war 包了.
該 war 包位于一個 target 目錄下
6. 部署程序
將上面的 war 包復制一份到 Tomcat/webapps 下
啟動 Tomcat (Tomcat/bin/startup.bat) 加載 war 包, 在 webapps目錄下便會生成一個同 war 包同名的目錄, 此時便算部署完成了
7. 檢驗程序
運行 Tomcat 打開網(wǎng)頁輸入127.01.01:8080/0310/hello, 得到如下頁面說明程序正確
這里, /0310 即為第一級目錄, 也就是你的 Context Path 路徑(包名路徑) , hello 為Servlet Path 路徑, 也就是你注解中的路徑文章來源:http://www.zghlxwxcb.cn/news/detail-705460.html
至此, Tomcat 部署 war 包并訪問就算告成了 !!!文章來源地址http://www.zghlxwxcb.cn/news/detail-705460.html
到了這里,關于Tomcat部署war包并成功訪問網(wǎng)頁的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!