劉意老師整理
Servlet
概念
步驟
package cn.itcast.web.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("demo1....");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
執行原理
生命週期
Servlet3.0 註解配置
Servlet的體系結構
Servlet -- 接口
|
GenericServlet -- 抽象類
|
HttpServlet -- 抽象類
GenericServlet -- 抽象類
- GenericServlet:將Servlet接口中其他的方法做了默認空實現,只將service()方法作爲抽象
- 將來定義Servlet類時,可以繼承GenericServlet,實現service()方法即可
HttpServlet:對http協議的一種封裝,簡化操作
- 定義類繼承HttpServlet
- 複寫doGet/doPost方法
Servlet相關配置
urlpartten:Servlet訪問路徑
- 一個Servlet可以定義多個訪問路徑 : @WebServlet({"/d4","/dd4","/ddd4"})
- 路徑定義規則:
/xxx:路徑匹配
/xxx/xxx:多層路徑,目錄結構
*.do:擴展名匹配
HTTP
概念:Hyper Text Transfer Protocol 超文本傳輸協議
傳輸協議:定義了,客戶端和服務器端通信時,發送數據的格式
特點:
- 基於TCP/IP的高級協議
- 默認端口號:80
- 基於請求/響應模型的:一次請求對應一次響應
- 無狀態的:每次請求之間相互獨立,不能交互數據
歷史版本:
- 1.0:每一次請求響應都會建立新的連接
- 1.1:複用連接
請求消息數據格式
請求行
請求方式 請求url 請求協議/版本
GET /login.html HTTP/1.1
請求方式:
- HTTP協議有7中請求方式,常用的有2種
GET:
- 請求參數在請求行中,在url後。
- 請求的url長度有限制的
- 不太安全
POST:
- 請求參數在請求體中
- 請求的url長度沒有限制的
- 相對安全
請求頭:客戶端瀏覽器告訴服務器一些信息
請求頭名稱: 請求頭值
常見的請求頭:
User-Agent:瀏覽器告訴服務器,我訪問你使用的瀏覽器版本信息
- 可以在服務器端獲取該頭的信息,解決瀏覽器的兼容性問題
Referer:http://localhost/login.html
- 告訴服務器,我(當前請求)從哪裏來?
作用:
- 防盜鏈:
- 統計工作:
- 請求空行
空行,就是用於分割POST請求的請求頭,和請求體的。
請求體(正文):
- 封裝POST請求消息的請求參數的
字符串格式:
POST /login.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
username=zhangsan