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提交時不設定依然是中文亂碼的一個原因,這一般情況想不到。