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里的值一樣就行 -->


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM