【Servlet】02-Servlet技術模型

Web應用體系結構中,咱們知道,容器控制Servlet的生命週期,負責封裝用戶請求給特定的Servlet。Servlet的具體職能以下:segmentfault

  • HTTP中的各類方法對應HttpServlet方法服務器

  • 使用HttpServletRequest接口獲取請求首部多線程

  • 使用HttpServletResponse接口設置相應首部、設置響應內容類型、使用流、URL重定向url

  • 擁有生命週期線程

Servlet的一輩子:
尋找類->加載類->構造對象->init()變成真正的Servletcode

Web容器->Servlet類: 加載.class
Web容器->Servlet對象: 構造方法
Web容器->Servlet對象: init()只執行一次哦
Web容器->Servlet對象: service()能夠反覆執行(多線程)
Web容器->Servlet對象: destory()

Servlet生命中的三大重要時刻:中間件

方法 什麼時候調用 做用 是否可覆蓋
init() Servlet實例建立之後,提供服務前 初始化Servlet,只運行一次 能夠
service() 第一個客戶請求到達時 肯定調用何種方法,有本身的棧 不能夠
doGet()/doPost() service()判斷之後 處理客戶端請求 至少要覆蓋一個

咱們知道,Servlet主要是對請求/響應模型進行實現,所以,HttpServlet中重要的方法:
請求:對象

  • getHeader(String name)接口

  • getRemotePort()生命週期

  • ...

響應:

  • setContentType(String contentType)

  • setHeader(String name, String value)

  • getOutputSream()

  • getWriter()

  • setRedirect(String url)

  • ...

咱們的Servlet能夠本身處理請求-響應細節,也能夠把請求委託給其它中間件(服務器、Servlet)

  • 轉發:URL不變,委託其它人(服務器內部跳轉)

  • 重定向:直接將請求定向到其它URL(讓客戶端二次請求)
    p.s. 不能再響應以後(已經往流裏寫東西了),sendRedirect()

既然咱們說到URL,URL也是有相對URL和絕對URL,因而,

// 下面是使用相對URL
response.sendRedirect("<someurl>");
// 下面是使用絕對URL,從項目根尋址
response.sendRedirect("/someurl");
相關文章
相關標籤/搜索