學習課程: 【這可能是B站講的最好的Servlet教程,5小時打通Servlet全套教程丨2022最新版,輕松掌握servlet基礎+案例實操】 https://www.bilibili.com/video/BV1Kr4y1V7ZE/?share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e0549e
Servlet的實作
基本介紹
? Servlet是Server與Applet的縮寫,是服務端小程式的總思,使用Java語言撰寫的服務器端程式,可以像生成動態的WEB頁,Servlet主要運行在服務器端,并由服務器呼叫執行,是一種按照Servlet標準來開發的類,是SUN公司提供的一門用于開發動態Web資源的技術,(言外之意:要實作web開發,需要實作Servlet標準)
? 它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的資料庫或應用程式之間的中間層,使用 Servlet,您可以收集來自網頁表單的用戶輸入,呈現來自資料庫或者其他源的記錄,還可以動態創建網頁,
? Servlet本質上也是Java類,但要遵循Servlet規范進行撰寫,沒有main()方法,它的創建、使用、銷毀都由Servlet容器進行管理(如Tomcat),(言外之意:寫自己的類,不用寫main方法,別人自動呼叫)
? Servlet是和HTTP協議是緊密聯系的,其可以處理HTTP協議相關的所有內容,這也是Servlet應用廣泛的原因之一,
提供了Servlet功能的服務器,叫做Servlet容器,其常見容器有很多,如Tomcat,Jetty,WebLogic,Server,WebSphere,JBoss等等,
Servlet架構:
實作Servlet規范
? 實作 Servlet 規范,即繼承 HttpServlet 類,需要匯入相應的包,(在此之前需要匯入對應的servlet的jar包),該類中已經完成了通信的規則,我們只需要進行業務的實作即可,
import javax.servlet.http.HttpServlet;
public class servlet01 extends HttpServlet{
}
重寫service方法和設定注解
-
重寫service方法
? 滿足Servlet規范只是讓我們的類能夠滿足接收請求的要求,接收到請求后需要對請求進行分析,以及進行業務邏輯處理,計算出結果,則需要添加代碼,在Servlet中有一個叫做service的方法,專門用來做請求處理的操作,業務代碼則可以寫在該方法中,
? service() 方法是執行實際任務的主要方法,Servlet 容器(即 Web 服務器)呼叫 service() 方法來處理來自客戶端(瀏覽器)的請求,并把格式化的回應寫回給客戶端,
? 每次服務器接收到一個 Servlet 請求時,服務器會產生一個新的執行緒并呼叫服務,service() 方法檢查 HTTP 請求型別(GET、POST、PUT、DELETE 等),并在適當的時候呼叫 doGet、doPost、doPut,doDelete 等方法,
-
設定注解
? 在完成好了一切代碼的撰寫后,還需要向服務器說明,特定請求對應特定資源,
? 開發servletI專案,使用@WebServlet將一個繼承于javax.servlet.http,HttpServlet的類定義為Servlet組件,
在Servlet3.0中,可以使用@VebServleti注解將一個繼承于javax.servlet.http.HttpServlet的類標注為可以處理用
戶請求的Servlet,
package com.xxxx.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//@WebServlet("/ser01")
//@WebServlet(name = "Servlet01", value = "https://www.cnblogs.com/ser01")//name就是一個名字可寫可不寫,value后面可以接陣列,陣列中的地址都可以訪問到該頁面
//@WebServlet(name = "Servlet01", value = https://www.cnblogs.com/zh-Note/archive/2023/06/12/{"/ser01", "/ser001"})
@WebServlet("/ser01")//路徑中的 "/" 一定不能忘
public class Servlet01 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Hello Servlet!");
resp.getWriter().write("Hello Servlet!");
}
}
實作Servlet的方式
- 繼承HttpServlet類
- 繼承GenericServlet類:GenericServlet類是HttpServlet類的父類,所以也可以用來實作Servlet;
- 實作Servlet介面:GenericServlet類也實作了Servlet介面,實作Servlet介面也可以使用Servlet;
以上三種方式通常使用HttpServlet,方法也更全面;
繼承GenericServlet類:
package com.xxxx.servlet;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ser02")
public class servlet02 extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("繼承GenericServlet類...");//GenericServlet是HttpServlet的父類
}
}
實作Servlet介面:
package com.xxxx.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ser03")
public class servlet03 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("實作Servlet介面");//GenericServlet實作了該介面
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/554965.html
標籤:其他
上一篇:C++面試八股文:了解位運算嗎?
下一篇:返回列表