天天看點

JavaWeb-01--JavaWeb的概念--Servlet 技術-- ServletConfig類--ServletContext 類- HTTP協定--get,post差別

文章目錄

  • ​​1.JavaWeb的概念​​
  • ​​**Web** **資源的分類**​​
  • ​​常用的Web伺服器​​
  • ​​Tomcat目錄介紹​​
  • ​​Servlet 技術​​
  • ​​什麼是servlet​​
  • ​​手動實作Servlet程式​​
  • ​​url位址到Servlet程式的通路​​
  • ​​Servlet 的生命周期​​
  • ​​Servlet和CGI的差別?​​
  • ​​Servlet接口中有哪些方法?​​
  • ​​通過繼承 HttpServlet 實作Servlet程式​​
  • ​​Servlet類的繼承體系​​
  • ​​ServletConfig類​​
  • ​​ServletConfig類的三大作用​​
  • ​​ServletContext 類​​
  • ​​什麼是ServletContext?​​
  • ​​什麼是域對象?​​
  • ​​ServletContext類的四個作用​​
  • ​​ServletContext 示範代碼:​​
  • ​​web.xml 中的配置​​
  • ​​ServletContext 像 Map 一樣存取資料:​​
  • ​​HTTP協定​​
  • ​​什麼是HTTP協定​​
  • ​​請求又分為 GET 請求,和 POST 請求兩種​​
  • ​​i. GET請求​​
  • ​​ii. POST請求​​
  • ​​iii.常用請求頭的說明​​
  • ​​哪些是GET請求,哪些是 POST請求​​
  • ​​GET 請求有哪些:​​
  • ​​POST 請求有哪些:​​
  • ​​響應的HTTP協定格式​​
  • ​​常用的響應碼說明​​

1.JavaWeb的概念

  • 什麼是JavaWeb

JavaWeb 是指,所有通過 Java 語言編寫可以通過浏覽器通路的程式的總稱,叫 JavaWeb。

javaWeb 是基于請求和響應來開發的。

  • 什麼是請求:

    請求是指用戶端給伺服器發送資料,叫Request。

  • 什麼是響應

    響應是指伺服器給用戶端回傳資料,叫響應 Response。

  • 請求和響應的關系

    請求和響應是成對出現的,有請求就有響應。

Web 資源的分類

web 資源按實作的技術和呈現的效果的不同,又分為靜态資源和動态資源兩種。

靜态資源: html、css、js、txt、mp4 視訊 , jpg 圖檔

動态資源: jsp 頁面、Servlet 程式

常用的Web伺服器

Tomcat:由 Apache 組織提供的一種 Web 伺服器,提供對 jsp 和 Servlet 的支援。它是一種輕量級的 javaWeb 容器(伺服器),也是目前應用最廣的 JavaWeb 伺服器(免費)。

JavaWeb-01--JavaWeb的概念--Servlet 技術-- ServletConfig類--ServletContext 類- HTTP協定--get,post差別

Tomcat目錄介紹

Servlet 技術

什麼是servlet

  1. Servlet 是 JavaEE 規範之一。規範就是接口 它是servlet規範中定義的用來處理用戶端請求的程式需要實作的頂級接口。
  2. Servlet 就 JavaWeb 三大元件之一。三大元件分别是:Servlet 程式、Filter 過濾器、Listener 監聽器。
  3. Servlet 是運作在伺服器上的一個 java 小程式,它可以接收用戶端發送過來的請求,并響應資料給用戶端

手動實作Servlet程式

  1. 編寫一個類去實作 Servlet 接口
  2. 實作 service 方法,處理請求,并響應資料
  3. 到 web.xml 中去配置 servlet 程式的通路位址

url位址到Servlet程式的通路

JavaWeb-01--JavaWeb的概念--Servlet 技術-- ServletConfig類--ServletContext 類- HTTP協定--get,post差別

Servlet 的生命周期

  1. 執行​

    ​servlet​

    ​程式 執行個體化
  2. 執行​

    ​init​

    ​初始化方法 初始化

    第一、二步,是在第一次通路的時候建立 ​

    ​Servlet​

    ​程式會調用
  3. 執行​

    ​service​

    ​方法 請求處理

    第三步,每次通路都會調用。

  4. 執行​

    ​destory​

    ​銷毀方法 服務結束

    第四步,在​

    ​web​

    ​ 工程停止的時候調用

Servlet和CGI的差別?

  • Servlet處于伺服器程序中,它通過多線程運作service()方法,一個執行個體可以服務于多個請求,并且執行個體一般不會被銷毀;
  • 而CGI對每個請求都産生一個新的程序,服務完成後就銷毀,所有效率低于Servlet

Servlet接口中有哪些方法?

Servlet接口定義了5個方法:

  1. void init(ServletConfig config) throws ServletException
  2. void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
  3. void destory()
  4. java.lang.String getServletInfo()
  5. ServletConfig getServletConfig()​

    ​Config​

    ​:配置
Web容器加載Servlet并将其執行個體化後,Servlet生命周期開始,容器運作其init()方法進行Servlet的初始化;請求到達時調用Servlet的service()方法,service()方法會根據需要調用與請求對應的doGet或doPost等方法;當伺服器關閉或項目被解除安裝時伺服器會将Servlet執行個體銷毀,此時會調用Servlet的destroy()方法

通過繼承 HttpServlet 實作Servlet程式

般在實際項目開發中,都是使用繼承 HttpServlet 類的方式去實作 Servlet 程式。

  1. 編寫一個類去繼承 HttpServlet 類
  2. 根據業務需要重寫 doGet 或 doPost 方法
  3. 到 web.xml 中的配置 Servlet 程式的通路位址

Servlet類的繼承體系

JavaWeb-01--JavaWeb的概念--Servlet 技術-- ServletConfig類--ServletContext 類- HTTP協定--get,post差別

ServletConfig類

servletCofing類從類名上來看,就知道是 Servlet 程式的配置資訊類。

Servlet 程式和 ServletConfig 對象都是由 Tomcat 負責建立,我們負責使用。

Servlet 程式預設是第一次通路的時候建立,ServletConfig 是每個 Servlet 程式建立時,就建立一個對應的 ServletConfig 對象

ServletConfig類的三大作用

  1. 可以擷取 Servlet 程式的别名 servlet-name 的值
  2. 擷取初始化參數 init-param
  3. 擷取 ServletContext 對象
// 1、可以擷取 Servlet 程式的别名 servlet-name 的值
System.out.println("HelloServlet 程式的别名是:" + servletConfig.getServletName()); 
// 2、擷取初始化參數 
init-param System.out.println("初始化參數 username 的值是;" + servletConfig.getInitParameter("username"));
System.out.println("初始化參數 url 的值是;" + servletConfig.getInitParameter("url")); 
// 3、擷取 ServletContext 對象 
System.out.println(servletConfig.getServletContext());      

ServletContext 類

什麼是ServletContext?

  1. ServletContext 是一個接口,它表示 Servlet 上下文對象
  2. 一個 web 工程,隻有一個 ServletContext 對象執行個體。
  3. ServletContext對象是一個域對象。
  4. ServletContext 是在 web 工程部署啟動的時候建立。在 web 工程停止的時候銷毀。

什麼是域對象?

域對象,是可以像 Map 一樣存取資料的對象,叫域對象。

這裡的域指的是存取資料的操作範圍,整個 web 工程。

存資料 取資料 删除資料
Map put() get() remove()
域對象 setAttribute() getAttribute() removeAttribute();

ServletContext類的四個作用

  1. 擷取 web.xml 中配置的上下文參數 context-param
  2. 擷取目前的工程路徑,格式: /工程路徑
  3. 擷取工程部署後在伺服器硬碟上的絕對路徑
  4. 像 Map 一樣存取資料
ServletContext 示範代碼:
//      1、擷取web.xml 中配置的上下文參數context-param
ServletContext context = getServletConfig().getServletContext();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String username = context.getInitParameter("username");
System.out.println("context-param 參數 username 的值是:" + username);
System.out.println("context-param 參數 password 的值是:" +
context.getInitParameter("password"));
//      2、擷取目前的工程路徑,格式: /工程路徑

System.out.println( "目前工程路徑:" + context.getContextPath() );
//     3、擷取工程部署後在伺服器硬碟上的絕對路徑
/**
* / 斜杠被伺服器解析位址為:http://ip:port/工程名/ 映射到IDEA 代碼的web 目錄<br/>
*/
System.out.println("工程部署的路徑是:" + context.getRealPath("/"));
System.out.println("工程下 css 目錄的絕對路徑是:" + context.getRealPath("/css"));
System.out.println("工程下 imgs 目錄 1.jpg 的絕對路徑是:" + context.getRealPath("/imgs/1.jpg"));
}      
web.xml 中的配置
<!--context-param 是上下文參數(它屬于整個web 工程)-->
<context-param>
<param-name>username</param-name>
<param-value>context</param-value>
</context-param>
<!--context-param 是上下文參數(它屬于整個web 工程)-->
<context-param>
<param-name>password</param-name>
<param-value>root</param-value>
</context-param>      
ServletContext 像 Map 一樣存取資料:

ContextServlet1 代碼:

public class ContextServlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// 擷取ServletContext 對象
ServletContext context = getServletContext();
System.out.println(context);
System.out.println("儲存之前: Context1 擷取 key1 的值是:"+ context.getAttribute("key1"));
context.setAttribute("key1", "value1");
System.out.println("Context1 中擷取域資料 key1 的值是:"+ context.getAttribute("key1"));
}
}      

ContextServlet2 代碼

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws 
ServletException,
IOException {
ServletContext context = getServletContext();

System.out.println(context);
System.out.println("Context2 中擷取域資料 key1 的值是:"+ context.getAttribute("key1"));
}      

HTTP協定

什麼是HTTP協定

什麼是協定?

協定是指雙方,或多方,互相約定好,大家都需要遵守的規則,叫協定。

所謂 HTTP 協定,就是指,用戶端和伺服器之間通信時,發送的資料,需要遵守的規則,叫 HTTP 協定HTTP 協定中的資料又叫封包

用戶端給伺服器發送資料叫請求。

伺服器給用戶端回傳資料叫響應。

請求又分為 GET 請求,和 POST 請求兩種

  1. get請求用來從伺服器上獲得資源,而post是用來向伺服器送出資料;
  2. get将表單中資料按照name=value的形式,添加到action 所指向的URL 後面,并且兩者使用"?“連接配接,而各個變量之間使用”&"連接配接;post是将表單中的資料放在HTTP協定的請求頭或消息體中,傳遞到action所指向URL;
  3. get傳輸的資料要受到URL長度限制(1024位元組);而post可以傳輸大量的資料,上傳檔案通常要使用post方式;
  4. 使用get時參數會顯示在位址欄上,如果這些資料不是敏感資料,那麼可以使用get;對于敏感資料還是應用使用post;
  5. get使用MIME類型application/x-www-form-urlencoded的URL編碼(也叫百分号編碼)文本的格式傳遞參數,保證被傳送的參數由遵循規範的文本組成,例如一個空格的編碼是"%20"。

i. GET請求

1、請求行

  • (1) 請求的方式 GET
  • (2) 請求的資源路徑[+?+請求參數]
  • (3) 請求的協定的版本号 HTTP/1.1

2、請求頭 key : value 組成 不同的鍵值對,表示不同的含義。

ii. POST請求

1、請求行

  • (1) 請求的方式 POST
  • (2) 請求的資源路徑[+?+請求參數]
  • (3) 請求的協定的版本号 HTTP/1.1

2、請求頭

  • key : value 不同的請求頭,有不同的含義

    空行

3、請求體 ===>>> 就是發送給伺服器的資料

iii.常用請求頭的說明

  • Accept: 表示用戶端可以接收的資料類型
  • Accpet-Languege: 表示用戶端可以接收的語言類型
  • User-Agent: 表示用戶端浏覽器的資訊
  • Host: 表示請求時的伺服器 ip 和端口号

哪些是GET請求,哪些是 POST請求

GET 請求有哪些:

1、form 标簽 method=get

2、a 标簽

3、link 标簽引入 css

4、Script 标簽引入 js 檔案

5、img 标簽引入圖檔

6、iframe 引入 html 頁面

7、在浏覽器位址欄中輸入位址後敲回車

POST 請求有哪些:

8、form 标簽 method=post

響應的HTTP協定格式

1、響應行

  • (1) 響應的協定和版本号
  • (2) 響應狀态碼
  • (3) 響應狀态描述符

2、響應頭

  • (1) key : value

不同的響應頭,有其不同含義

常用的響應碼說明

  • 200 表示請求成功
  • 302 表示請求重定向
  • 404 表示請求伺服器已經收到了,但是你要的資料不存在(請求位址錯誤)
  • 500 表示伺服器已經收到請求,但是伺服器内部錯誤(代碼錯誤)