引入課程和Maven
1.Maven
maven中央倉庫:Maven Repository: Search/Browse/Explore (mvnrepository.com)
maven倉庫是國外的一個網站,由于網路問題,我們也常使用maven倉庫的鏡像
maven的原理和java程式操作資料庫,然后資料庫回傳相關資料類似,
1.1創建maven-web專案
-
先創建一個Maven的Web專案
選擇file-new-project
-
在彈出的視窗中選擇Maven,點擊選擇右邊的create from archetype
-
在下面選擇maven-archetype-webapp,然后點擊next
-
輸入相關資料,點擊next
-
指定專案使用的maven程式(第一次使用可以先不指定2和3,稍后再指定),點擊finish

-
默認創建的專案結構如下:
-
點擊專案左上角的file-setting,在彈出的視窗中點擊build,execution,deployment,再選擇maven
-
在右邊的maven home path框中,選擇默認的或者你自己下載的maven程式(我這里選擇默認)
-
在資源管理器中打開該上面的目錄,將conf下的setting.xml檔案復制到c盤用戶目錄的m2.目錄下
-
打開復制后的setting.xml檔案,找到mirror標簽,注釋掉原來的mirror鏡像

添加新鏡像如下:
<mirror> <id>alimaven</id> <name>aliyun</name> <url>https://maven.aliyun.com/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror> -
回傳idea的視窗中,選擇剛才配置的xml檔案和要存盤下載的jar包的目錄,點擊override,點擊ok
這樣就完成了maven的鏡像配置
-
在專案的pom.xml檔案中添加配置
在dependency元素中添加配置如下:
<!--引入Servlet.jar--> <!--1.為了開發servlet,需要引入其jar包 2.dependency 表示引入一個包 3.groupId 表示包的開發公司/組織/個人 的資訊 javax.servlet 4.artifactId 表示包的專案名稱 javax.servlet-api 補充:groupId+artifactId是以目錄形式體現 5.version 表示該包當前的版本 6.scope 表示引入的包的作用范圍 7.provided 表示 這里你引入的jar包,在編譯,測驗有效,但是在打包發布的時候,不要帶上這個jar包 (因為Tomcat本身有jar包) 8.下載的包在你指定的目錄中 9.可以去修改我們要下載的目錄位置 10.可以去指定maven倉庫,即配置maven鏡像 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> -
點擊右邊的Maven,點擊回圈按鈕,開始下載依賴
-
下載完畢后,可以在配置的下載目錄中看到該依賴:
下一次如果要使用依賴,就會先到下載目錄下去找該依賴,
2.測驗小案例
撰寫如下的測驗案例
創建java目錄,存放源檔案
創建Servlet(如果選項中沒有Servlet,點擊右邊的maven,重新導一下包)
在web.xml檔案中配置Servlet(使用注解也可以)
<servlet>
<servlet-name>CalServlet</servlet-name>
<servlet-class>com.li.servlet.CalServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CalServlet</servlet-name>
<url-pattern>/calServlet</url-pattern>
</servlet-mapping>
撰寫程式
WebUtils:
package com.li.utils;
public class WebUtils {
/**
* 將一個字串數字轉成int,如果轉換失敗,就回傳傳入的defaultVal
*
* @param strNum
* @param defaultVal
* @return
*/
public static int parseInt(String strNum, int defaultVal) {
try {
return Integer.parseInt(strNum);
} catch (NumberFormatException e) {
System.out.println(strNum + "輸入的格式錯誤");
}
return defaultVal;
}
}
CalServlet:
package com.li.servlet;
import com.li.utils.WebUtils;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
public class CalServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收提交的資料進行計算
String strNum1 = request.getParameter("num1");
String strNum2 = request.getParameter("num2");
//把strNum1和strNum2轉成int型別
int num1 = WebUtils.parseInt(strNum1, 0);
int num2 = WebUtils.parseInt(strNum2, 0);
int result = num1 + num2;
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.print("<h1>" + num1 + "+" + num2 + "=" + result + "</h1>");
writer.flush();
writer.close();
}
}
cal.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>計算器</title>
</head>
<body>
<h1>計算器</h1>
<!--這里的路徑是瀏覽器要決議的,因此如果寫成/calServlet的話,就會決議成http://主機名/calServlet
想要這樣配置的話,tomcat的路徑就不要寫專案名了-->
<form action="/calServlet" method="post">
num1:<input type="text" name="num1"/><br/>
num2:<input type="text" name="num2"/><br/>
<input type="submit" value="https://www.cnblogs.com/liyuelian/archive/2022/11/15/提交">
</form>
</body>
</html>
配置Tomcat(注意application context的配置)
點擊運行tomcat,在瀏覽器地址欄中輸入:http://localhost:8080/cal.html,顯示頁面如下:
輸入資料,點擊提交:

2.Tomcat整體專案架構分析
我們創建web專案,都要依賴于Tomcat等web服務以及實作繼承Servlet介面,
可以看出對Tomcat的底層機制和呼叫到Servlet的流程的理解是十分重要的,
現在我們來模擬Tomcat底層實作,并能呼叫我們自己設計的Servlet,完成相同的功能,
說明:Tomcat有三種運行模式(BIO,NIO,APR),因為核心講解的是Tomcat如何接受客戶端請求,決議請求,呼叫Servlet,并回傳結果的流程機制,因此采用BIO執行緒模型來模擬,
整個流程如下:
- 瀏覽器在地址欄輸入請求的URL,發送http請求
- http請求到達Tomcat后,底層的socket網路編程會接收這個請求,創建一個執行緒(每一個請求對應一個執行緒)
- 被創建的執行緒就會去決議這個URL是什么請求,如果是請求Servlet資源,就去呼叫Servlet(底層會用反射實體化);如果呼叫的是靜態資源,就直接回傳
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534125.html
標籤:其他
下一篇:類加載機制
