1. 服務器的概念和作用:
- 問題:
??學習了 java 編程之后,java 代碼的一個很重要的作用就是進行數據的處理,但是目前來說我們運行編寫的代碼,只有一次性,也就是運行完畢后,如果需要再次運行則需要再次手動啟動代碼的執(zhí)行。但是我們無法提前預知用戶會何時發(fā)送請求,也就無法決定我們編寫的 java 代碼應該什么時候啟動運行。而且手動運行也變得不現實。 - 解決:
??那么根據 java 的網絡編內容,我們是不是可以使用代碼編寫一個容器(對象)呢?,該容器可以根據用戶的請求來啟動并運行我們編寫的數據邏輯代碼。答案是可以的。 - 實現:
??服務器 - 解釋:
??所謂服務器其實就是代碼編寫的一個可以根據用戶請求實時的調用執(zhí)行對應的邏輯代碼的一個容器。在普通用戶看來就是一個安裝程序。我們只需要將服務器在操作系統(tǒng)上進行安裝,并將我們事先編寫好的邏輯處理代碼根據規(guī)則放到服務器的指定位置,啟動服務器,那么服務器就自動的會根據接收到請求調用并執(zhí)行對象的邏輯代碼進行處理。
2. Tomcat
默認端口號:8080
- cd到Tomcat的bin目錄下:
- 授權bin目錄下的所有操作:終端輸入
sudo chmod 755 *.sh,輸完回車 - 開啟Tomcat,終端輸入
sudo sh ./startup.sh,輸完回車 - 關閉Tomcat,終端輸入
sudo sh ./shutdown.sh,回車即可關閉 - 補充:
755代表用戶對該文件擁有讀、寫、執(zhí)行的權限,同組的其他人員擁有執(zhí)行和讀的權限,沒有寫的權限,其它用戶的權限和同組人員一樣.
- 授權bin目錄下的所有操作:終端輸入
-
sudo sh- 此命令以超級用戶身份運行"sh"
- sh實用程序是一個命令語言解釋器,它將執(zhí)行從命令行字符串,標準輸入或指定文件讀取的命令。
-
-Dfile.encoding=UTF-8修改Tomcat配置
注意: -
@WebServlet(name = "UserServlet", urlPatterns = "/user")- 以這種形式配置servlet訪問名,然后我就是少了前面的“/”導致了啟動tomcat時,報錯
java.lang.IllegalStateException: Error starting child
- 以這種形式配置servlet訪問名,然后我就是少了前面的“/”導致了啟動tomcat時,報錯

Servlet亂碼.png
3. Apache
默認端口號:80
- 打開終端,開啟Apache:
- 開啟apache:
sudo apachectl start - 重啟apache:
sudo apachectl restart - 關閉apache:
sudo apachectl stop
- 開啟apache:
- Apache服務器的默認文件路徑
/Library/WebServer/Documents
在/etc/apache2/httpd.conf找到DocumentRoot可修改配置
4. Apache和Apache Tomcat的區(qū)別和聯系
- Apache是
web服務器(靜態(tài)解析,如HTML),tomcat是java應用服務器(動態(tài)解析,如JSP) - Tomcat只是一個
servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴展,但是可以獨立于apache運行 - 同為服務器,Tomcat的特別之處在于它還是
Java的Web容器,能夠處理JSP;而Apache一般是與PHP結合,并不能處理JSP。 - Tomcat本身也內含了一個HTTP服務器,它也可以被視作一個單獨的Web服務器。
- 兩者整合:
- 如果要在Apache環(huán)境下運行jsp就需要一個解釋器來執(zhí)行jsp網頁,而這個jsp解釋器就是Tomcat
那為什么還要JDK呢? - 因為jsp需要連接數據庫的話就要jdk來提供連接數據庫的驅程,所以要運行jsp的web服務器平臺就需要
APACHE+TOMCAT+JDK
- 如果要在Apache環(huán)境下運行jsp就需要一個解釋器來執(zhí)行jsp網頁,而這個jsp解釋器就是Tomcat
- 整合的好處:
- 如果客戶端請求的是靜態(tài)頁面,則只需要Apache服務器響應請求
- 如果客戶端請求動態(tài)頁面,則是Tomcat服務器響應請求
- 因為jsp是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷