1. 程式人生 > >IDEA建立Java專案並配置servlet

IDEA建立Java專案並配置servlet

1.建立JavaWeb專案

File --> New --> Project...


設定工程名字:


建立完成後工程結構如下:


2.設定Web專案

2.1 在WEB-INF 目錄下點選右鍵,New --> Directory,建立 classes 和 lib 兩個目錄
classes目錄用於存放編譯後的class檔案,lib用於存放依賴的jar包


2.2 File --> Project Structure...,進入 Project Structure視窗,點選 Modules --> 選中專案“JavaWeb” --> 切換到 Paths 選項卡 --> 勾選 “Use module compile output path”,將 “Output path” 和 “Test output path” 都改為之前建立的classes目錄
即將後面編譯的class檔案預設生成到classes目錄下


2.3 點選 Modules --> 選中專案“JavaWeb” --> 切換到 Dependencies 選項卡 --> 點選右邊的“+”,選擇 “JARs or directories...”,選擇建立的lib目錄


選擇Jar Directory


2.4 配置打包方式Artifacts:點選 Artifacts選項卡,IDEA會為該專案自動建立一個名為“JavaWeb:war exploded”的打包方式,表示 打包成war包,並且是檔案展開性的,輸出路徑為當前專案下的 out 資料夾,保持預設即可。另外勾選下“Build on make”,表示編譯的時候就打包部署,勾選“Show content of elements”,表示顯示詳細的內容列表。


3.配置Tomcat

3.1 Run -> Edit Configurations,進入“Run Configurations”視窗,點選"+"-> Tomcat Server -> Local,建立一個新的Tomcat容器


3.2 在"Name"處輸入新的服務名,點選“Application server”後面的“Configure...”,彈出Tomcat Server視窗,選擇本地安裝的Tomcat目錄 -> OK


3.3 在“Run Configurations”視窗的“Server”選項板中,去掉勾選“After launch”,設定“HTTP port”和“JMX port”,點選 Apply -> OK,至此Tomcat配置完成。


4.JavaWeb測試

4.1 Run -> Edit Configurations,進入“Run Configurations”視窗,選擇之前配置好的Tomcat,點選“Deployment”選項卡,點選“+” -> “Artifact”-> 選擇建立的web專案的Artifact...修改“Application context”-> Apply -> OK


說明:此處的Application context是指定本工程的根目錄

4.2 在index.jsp檔案中的body之間新增要顯示的內容,然後點選“執行”的綠色三角
開啟瀏覽器,輸入:localhost:8080/JavaWeb


至此,intellij idea建立並設定javaweb工程全部完成,下面是在其中編寫並執行Servlet。

5.Servlet簡單實現

5.1. 編寫servlet原始檔
在src目錄下新建HelloServlet.java,並編寫一下程式碼並進行編譯:


編譯後會發現在classes目錄下生成了HelloServlet.class檔案


5.2. 部署servlet
方法一:
在WEB-INF目錄下web.xml檔案的標籤中新增如下內容:


方法二:
在HelloServlet檔案的類前面加上:@WebServlet("/hello")


5.3. 執行servlet
點選執行按鈕


控制檯出現successfully則tomcat服務啟動成功!開啟瀏覽器輸入:localhost:8080/JavaWeb/HelloWorld即可檢視servlet執行狀態了.


6.接受Get和Post請求的Servlet

建立一個Client類,定義兩個基本方法。


下面,我們來實現這兩個方法,先看看GET,比較簡單:



註釋都很詳細了,只是要說一點,GET方式提交的引數是繫結在URL中的,所以這部分要單獨處理,進行轉碼,引數是Map型別,那麼我們遍歷這個Map獲取引數,並拼裝成?,&的格式就行了。下面來看POST,這個複雜一點:


這中間就是設定POST方式時要開啟兩個選項,不能忘了。而且POST方式提交引數,引數是在請求體中傳送的,就是和GET的一個很重要的區別。模擬好了兩個方法,下面我們來寫Servlet,這就很簡單了,我們使用RequestServlet:


好了,我們來測試GET請求,寫主函式:


在控制檯,我們就得到了如下的輸出:


因為我們列印了還原出的引數形式,這裡沒有用中文,所以看不出編碼效果,中文效果大家可以自行測試。 POST方式就是修改主函式中呼叫的方法,這裡不再測試了。 至此我們已經可以脫離瀏覽器進行GET/POST請求了,基本上網路傳輸的方式我們都可以來看看伺服器返回的原始資料了,設定好URL和所需引數,直接執行就行了。 Servlet的原理很簡單,這是比較直觀的實現,要比直接上來就B\S清楚很多。

常見問題:

1.Tomcat許可權問題?

問題描述:

下午9:11:27 All files are up-to-date
下午9:11:27 All files are up-to-date
下午9:11:27 Error running Tomcat 8.0.18: Cannot run program "/Users/horse_leo/Documents/apache-tomcat-8.0.18/bin/catalina.sh" (in directory "/Users/horse_leo/Documents/apache-tomcat-8.0.18/bin"): error=13, Permission denied

提示的主要問題是許可權不足
解決方案:

開啟終端,進入tomcat\bin目錄,然後執行chmod 777 *.sh

2.HttpServlet找不到?

解決方案:

到/tomcat/lib下匯入servlet-api.jar

3.Tomcat中文亂碼?

問題描述:

用GET方式測試時,引數是英文沒有問題,可是出現中文時,也轉碼了,但沒有配置的Tomcat依然讀取的是亂碼

解決方案
配置Tomcat的server.xml:


加一個URIEncodeing選項就可以了,這樣走GET請求編碼就正常了,這也是Ajax走GET提交時不設定依然是中文亂碼的一個原因,這一般情況想不到。