在做java web 開發時,要先安裝tomcat。它是一個web服務器,也叫web容器,我們把寫好的jsp, html頁面放到它里面,然后啟動它,就可以用瀏覽器訪問這些頁面,地址欄中輸入localhost進行訪問。安裝tomcat,非常簡單,到tomcat的官網 http://tomcat.apache.org/ 下載zip壓縮包就可以了,版本的話,你可以隨便選,我這里是 Tomcat 8.5.23. 下載完成后,把它解壓到常用軟件的放置位置就可以了,我把它放到了D盤。注意,tomcat 的啟動依賴jvm,所以一定要先配置好java開發環境。
Tomcat是一個web服務器,那我們怎么啟動它呢?在上圖apache-tomcat-8.5.23文件夾中(以下簡稱tomcat文件夾)里面有一個bin目錄,bin目錄下有一個startup.bat
雙擊它,可以看到一個黑色的tomcat命令窗口,底部有一個光標在閃爍,表示啟動成功。這時在瀏覽器地址欄中,輸入localhost:8080, 可以看到以下畫面,也表示服務器啟動成功。
我們把頁面放到tomcat里,具體放到哪里呢?tomcat 文件夾中有一個webapps目錄,我們要把文件放到它里面。
初步了解了Tomcat服務器,那就寫一個簡單的web 項目體驗一下。在webapps目錄中,新建一個myHome文件夾,然后在里面新建一個index.jsp文件,內容如下, 這個myHome 就是我們的項目
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="theme-color" content="#000000"> <title>React App</title> </head> <body> <div id="root"> Hello world </div> </body> </html>
除了index.jsp文件外,還要新建一個WEB-INF文件夾,它是java web應用的安全目錄,就是瀏覽器無法訪問其中的內容,只有通過服務器端的代碼才能訪問其中的內容。這里不明白也沒有關系,在webapps文件夾中有一個examples文件夾,它里面有WEB-INF 文件夾,直接把它復制到myHome文件夾中就可以了。這時用startup.bat 打開服務器,在瀏覽器地址欄中輸入 http://localhost:8080/myHome/index.jsp,就可以看到 Hello world
這里要說一下WEB-INF 文件夾中的三個主要的文件,以后會用到
1,web.xml, 整個項目的布署文件。
2,classes: 我們整個項目編譯好的.class文件
3,lib: 我們整個項目用到的外部文件,如jar 包。
現在我們用Eclipse 來進行開發,由於Eclipse並沒有內置Tomcat服務器,我們要先把Tomcat配置到Eclipse中。Eclipse上菜單的Window--->Preferences, 在左邊選項中選擇Server(或輸入server)--->Runtime Environments, 在右側有一個Add,點擊,彈出如下對話框,
這里,我們選Tomcat v8.5, 然后勾選下面的Create a new local server, 點擊next,
在 Tomcat installation directory 中,選擇我們Tomcat的安裝目錄,在JRE中,選擇我們安裝的jdk, 點擊finish, 再點擊apply and close, 配置完成。這時在Eclipse 左側面板中出現Server 目錄。這時我們在server面板中配置一下服務器,以便快速啟動服務器。
Server 面板下有提示,我們直接點擊上圖中的下划線,彈出對話框,
選Tomcat v8.5 server, 然后點擊finish, 就可以,這時server面板上出現了服務器。當我們選中服務器后,再點右上角的綠色開始按鈕,就可以啟動服務器。
現在我們用Eclipse 來把上面的myHome項目實現一下。 File--->New--->Other--->輸入WEb--->選擇Dynamic Web Project 如下圖:
點擊next, 輸入Project name: myHome,點擊finish 即可。這時Eclipse 左側面板中多了我們新建的項目。
這時我們看到有一個WebContent 文件夾,它下面有一個WEB-INF,這時我們想到在webapps里面的內容,當時我們在在webapps里myHome建了index.jsp, WEB-INF。也就是說在WebContent目錄下,我們可以建立index.jsp文件。我們把webapps里myHome的內容直接復制到WebContent下,項目完成了,我們要啟動服務器了。
在server面板中,右鍵單擊,彈出以下內容
選 add and remove,
選中myHome,點Add, 再點finish. 我們就把當前項目添加到Tomcat 服務器中,點擊面板右上角的綠色的開始按鈕,就可以啟動服務器了。這時要看console 面板,看有沒有報錯,只要顯示Server startup in 677 ms, 就表示啟動成功了。這時在 瀏覽器中輸入http://localhost:8080/myHome/index.jsp,就可以看到Hello World.
Servlet
服務端代碼的開發,肯定要接受請求,並做出響應,那在java中是怎么接受請求,並做出響應的?這應用到了Servlet。它是一個接口,遵循着http協議,它有兩個對象,request 和response,分別是瀏覽器請求對象和服務器的響應對象,如果做過node開發,它就相當於http.createServer,創建一個web服務器,然后接受兩個參數response 和request,請求和響應對象。
使用Servlet,就要新建一個Servlet。在myHome項目中,它有一個Java Resources目錄,在其下面src上右鍵單擊 - >new -> servlet
點擊Servlet,彈出Create Severe 對話框,我們添寫package, className.
點擊finish,我們建立了Servlet 文件。但是有錯誤 The import javax.servlet cannot be resolved, 如下圖
這是因為我們並沒有把包導進來。 這時在myHome 項目上,右鍵單擊 ->Build Path -> configure build path
出現以下對話框
Libraries 選項卡,就是我們這個項目用到的包,右側有一些按鈕,add, Edit, Remove 可以對整個項目用到的文件進行管理,如 JRE System Library[jdk1.8], 就表示我們這個項目用的jdk1.8, 如果想要更換,可以點擊Remove和Edit。 我們在這里主要導入Servlet包,有兩種方法
1, 可以選擇Add External Jars, 添加外部jars. 點擊該按鈕,在彈出的對話框中 找到你計算機中tomcat的解壓路徑,在lib文件夾下選中"servlet-api.jar" ,如下圖:
點擊打開,可以看到servelet-api.jar 已經導入到項目中。
再點擊Apply and close, 可以年到代碼沒有報錯了。
2,還可以選擇 Add Library, 在彈出的對話框
選Server Runtime,點擊next, 選Apache Tomcat v8.5, 再點擊Finish 把整個運行環境加進去,同樣代碼也不會報錯。
在TestServlet.java 文件中, 我們看到了doGet, doPost 方法,它們都有response 和request 參數,可以知道它分別處理 get 請求和Post請求,所有處理邏輯都寫到這兩個方法中,也就是重寫了HttpServlet 類的這兩個方法。
2, 在web.xml中配置servlet.
我們已經新建一個servlet, 我們就要讓tomcat 知道servlet已經存在了。這就需要在web.xml 進行配置。
首先配置servlet,在xml 中<web-app></web-app>標簽中寫以下內容
<servlet> <servlet-name>logServlet</servlet-name> <servlet-class>com.testServlet.TestServlet</servlet-class> </servlet>
<servlet-name> 是這個servlet的名字,最好寫一個有意義的名字. <servlet-class>就是它個servlet指向的類, 當訪問這個servlet時,就會進入到com.testServlet.TestServlet這個類的代碼下,在這個類的doGet, doPost方法下處理請求和響應。
配置完成后,要檢查配置的對不對。當我們把鼠標放到com.testServlet.TestServlet 上的時候,它會出現一個提示信息,這時按住ctrl + j, 然后再把鼠標移入到com.testServlet.TestServlet上時,它就會出現下划線,點擊,它就會跳轉到TestServlet類,表示我們配置成功。在這里web.xml 文件用xml Edit 打開。在web.xml上右擊,然后open with,再XML Editor.
除了配置servlet,還要配置servlet-mapping, 它下面有一個url-pattern, 就是我們怎么才會入進入到這個請求。
<servlet-mapping> <servlet-name>logServlet</servlet-name> <url-pattern>/log</url-pattern> </servlet-mapping>
我們在這里url-parttern配置了/log, 這表示,我們在瀏覽器地址欄中輸入 localhost:8080/myHome/log,它就會進入到這個servlet下。htmlServlet是我們這個項目的名稱。
這時在server面板中,啟動服務器,然后在瀏覽器中輸入localhost:8080/myHome/log, 發現報錯了, java.lang.ClassNotFoundException:(新建的servlet無法找到class文件)
這時我們應該注意到,servlet 是一個java文件,首先要對它進行編譯,然后才執行。project->Build Automatically ,點擊進行勾選
如果還是不行,點擊上圖中的Clean,在彈出的對話框中點擊clean, 手動進行編譯。
編譯完成后,還是出現同樣的問題,還是找不到類,有可能是我們的項目設置出了問題,這時突然想起來,在jsp時webapps每個項目下都有一個WEB-INF目錄,它下面又有三個子目錄,classes, lib, web.xml, 而在我們Eclipse項目 中WEB-INF,有兩個目錄web.xml, lib, 缺一個classes目錄,是不是我們編譯好的servlet 都要放到這個目錄下。項目右鍵->properties->Java Build Path->Source 將Default output folder設置為Myhome/WebContent/WEB-INF/classes,點擊OK。
這時再啟動服務器,刷新瀏覽器,終於成功了。
總結:新建web項目的步驟應該 如下
1,File--->New--->Other--->輸入Web--->選擇Dynamic Web Project ,彈出對話框如下,
2,上圖中輸入項目名Myhome,點擊next, 在彈出的對話框中,再單擊next, 彈出如下對話框
3, 在上圖的對話框中,勾選圖中標注的多選框,點finished,完成項目的創建。
4, 項目創建完成后,它會在Eclipse左側面板中顯示。這時在面板中myHome項目名稱上 ,右鍵單擊 ->Build Path -> configure build path,Source面板如下:
5, 在上面的Default output folder 右側單擊單擊Browser,修改默認的路徑,彈出如下對話框
6, 先點擊上圖中的WEB-INF, 再單擊Create New Folder 紅色方框,彈出箭頭指示的輸入框,輸入classes,點OK 按鈕, 再點OK按鈕
7, 如上圖紅色方框所示,默認的路徑修改成功。
8, 再點擊上圖中的Library面板 ,添加或刪除我們項目所用的包 ,再點擊Apply and Close 按鈕,項目創建成功。
9, 確保Eclipse 菜單Project 下面的 Build Automatically 勾選。
經過以上步驟, 我們就可以開發web 項目了。