JavaWeb(一)【Tomcat和Servlet入門】
1.使用Tomcat7.0:在8.0以後的版本,對編碼作了優化,較少出現亂碼問題。使用7.0是為了學習如何處理亂碼問題。
2.解壓即可使用。首先要設定環境變數JAVA_HOME.不然會出現Tomcat啟動一閃而過,導致開啟失敗。
startup.bat:啟動伺服器
shutdown.bat:停止伺服器
3.Tomcat載入Eclipse開發環境:
Windows->Prepferences->Server->Runtime Environments
顯示Tomcat視窗欄:Window->showView->Servers;
4.專案加入Tomcat。Servers視窗中,對Tomcat7.0右鍵->add and remove...
當執行tomcat出現錯誤時,先移除專案,再執行。如果還是有錯,是tomcat的錯誤。沒有錯,是專案的錯誤
5.tomcat解決亂碼方式:
1)請求亂碼:
post請求:request.setCharacterEncoding("utf-8");
2)響應亂碼:
response.setContentType("text/html;charset=utf-8");
6.埠衝突問題:
1)將佔用埠的應用結束:
cmd->netstat -ano 檢視程序所使用的埠
2)修改自身應用的埠號:
修改tomcat/conf/server.xml中的埠號
HTTP協議:
1.協議規定了不同瀏覽器和不同軟體伺服器統一所要遵循的規則,規範瀏覽器和伺服器之間的資料傳遞。
2.每次請求必須要得到迴應,請求錯誤也會迴應。1.1版本的協議增加了請求超時會結束通話協議。
3.HTTP協議的內容形式:
1)使用高階瀏覽器(Goole,FireFox)抓包:
FireFox,按F12->網路選項卡->跳轉到新的頁面,會顯示請求的協議;
2)協議內容:
(1)GET方式:
請求行:請求方式 請求路徑 協議版本
請求頭:請求頭一般都是key.value鍵值對的形式,一般情況下一個key對應一個value.也有一些是一個key對應多個value
(2)POST方式:多了一個請求體
(3)響應部分:
響應頭:鍵值對,一般一個key對應一個value,也有一個key對應多個value;
*Last-Modefied: 與請求中的IF-Modified-Since 一起使用查詢本地快取。
*Content-Dispistion:檔案下載的使用的一個頭資訊
*Location :重定向的跳轉的路徑
*Refresh :定時重新整理/定時跳轉
*響應體:顯示到瀏覽器頁面的內容
Servlet部分:
1.概念理解:
Servlet只是一個執行在WEB伺服器上的小的java程式,用來接收和響應從客戶端發過來的請求,通常使用HTTP協議。
2.在web方面使用Servlet的具體步驟:
1).新建一個普通java類,實現Servlet介面,載入所有介面方法。把server()方法放到前面。
2).新建一個Servlet,良好的習慣是先到web.xml中配置servlet。理解一下web.xml執行原理就知道怎麼配置了:
web.xml是web專案的核心配置。一旦寫錯,專案就無法執行。web.xml作為前端和後臺伺服器的中介軟體。或者說,作為form表單與Servlet聯絡的中介軟體。
當一個form表單做出提交的請求後,首先是轉發到web.xml中,通過表單的action裡面提供的servlet虛擬路徑名,與<servlet-mapping>標籤的設定的虛擬路徑匹配,然後找到servlet-name相同的
得到servlet的路徑。進而再把表單交給servlet處理。
因此,配置方式如下:
(1)在<web-app></web-app>之間加入<servlet ></servlet>和對映標籤<servlet-mapping></servlet-mapping>。注意,兩個是並列關係,不是包含
(2)在<servlet-mapping>標籤中,新增兩個標籤:
<servlet-name>mytest</servlet-name>:名字隨便取,但是要和<servlet>標籤中的<servlet-name>標籤名字一樣。
<url-pattern>/aa</url-parttern>:虛擬路徑名,隨便取,但是要和前端form表單的action裡面設定的虛擬路徑名一樣。
(3)在<servlet ></servlet>標籤中。設定兩個值
<servlet-name>mytest</servlet-name>:與<servlet-mapping>標籤中的<servlet-name>名字一樣。
<servlet-class>Servlet類所在的包路徑名
(4)form表單中action屬性寫虛擬路徑名的兩個寫法:
絕對路徑名:/day0531/aa
相對路徑名:aa
這兩個寫法都可以,推薦用絕對路徑名。
3.request獲取請求引數的常用方法:
注意,返回的都是String型別的資料,string->int:Integer.parseToInt()
String getParameter(String name):通過表單名字獲取引數
String[] getParameterValues(String name); 通過表單名字獲取多個值:比如下拉框,多選框
Map<String,String> getParameterMap():以【name:value】的鍵值對應封裝在map集合。
Enumeration getParamterNames();用於獲取所有的表單元件名字。