java-web中的web.xml中的servlet和servlet-mapping標籤,及網頁處理流程
servlet的標籤解釋:servlet-mapping是一個對映標籤,將url對映到servlet-class裡面指定的具體類中,而兩者servlet-name名字必須相同,servlet-mapping和servlet-class兩者之間是通過
servlet-name連線的,只用名字相同對映才能到達具體類,否則對映失敗,url請求後臺的java類就會無法處理。
web.xml裡面
1 <servlet> 2 <servlet-name>a</servlet-name> <--! 裡面隨便寫只要保持和servlet-mapping標籤裡的servlet-name裡的值一樣就行 -->3 <servlet-class>com.nan.LoginServlet</servlet-class> <--! 要對映的具體包名和類名 所以這裡填寫 包名+類名 --> 4 </servlet> 5 <servlet> 6 <servlet-name>a</servlet-name> <--! 裡面的值隨便寫 只要保持和servlet裡面的 servlet-name標籤裡的值一樣即可 因為servlet-name相當於servlet和servlet-mapping標籤之間連線橋樑 -->7 <url-pattern>/qq</url-pattern> <--! web.xml 的 / 表示的是http://localhost:8080/ + 工程名 --> 8 </servlet>
網頁訪問流程:
1.首先前端輸入url,如:
請求為:見下圖 1.1
2.此時網頁的請求傳送到web.xml檔案中 注意:前端輸入的請求地址必須跟url-pattern相同,否則url-pattern無法捕獲url請求
url-pattern通過servlet-name標籤找到這個請求實現的具體類---> servlet-class 裡面的 LoginServlet類 進行具體處理 (java程式碼見下面) 2.2
3.此時 java後臺的Login-Servlet類處理完了請求之後,將返回在結果送入web.xml,再通過對映,從servlet-class對映到url-pattern將響應結果傳送到前端頁面 響應結果見下面截圖 3.3
1.1 2.2
1 package com.nan; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 public class LoginServlet extends HttpServlet{ 11 @Override 12 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 13 String username= req.getParameter("username"); 14 String password = req.getParameter("password"); 15 resp.getWriter().print("使用者名稱是:"+username); 16 resp.getWriter().print("密碼是:"+password); 17 } 18 @Override 19 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 20 doGet(req, resp); 21 } 22 }View Code
3.3
url-pattern 標籤中的值是要在瀏覽器位址列中輸入的 url,可以自己命名,
這個 url 將會訪問名為 servlet-name 中值的 servlet,兩個 servlet-name 標籤的值必須相同,、
因為通過 servlet 標籤中的 servlet-name 標籤對映到 servlet-class 標籤中的值,
最終訪問 servlet-class 標籤中的 class。
還有,web.xml 的 / 表示的是http://localhost:8080/ + 工程名
而.jsp頁面的action,加了/表示絕對路徑http://localhost:8080/ ,沒有加 / 表示的是相對路徑
<--! 裡面隨便寫只要保持和servlet-mapping標籤裡的servlet-name裡的值一樣就行 -->