1. 程式人生 > >Java Web02之深入servlet

Java Web02之深入servlet

servlet(重點)

Servlet是執行在伺服器端的java小程式
我們建立的一個類要是Servlet,則它必須直接或者間接實現Servlet
servlet
如何建立一個Servlet

servlert裡面的方法
圖片總結:Servlet(曾祖父) –> GenericServlet( 爺爺 ) –> HttpServlet(爸爸 ) (繼承HttpServlet( 孫子))

Servlet的建立方式:(掌握)
建立Servlet的三種方式

1.直接建立一個類實現Servlet介面,實現介面的方法
2.建立一個類繼承GenericServlet抽象類,實現抽象類的方法
3.建立一個類繼承HttpServlet(常用)

方式1:直接實現Servlet介面步驟(掌握)
1. 建立一個類實現Servlet介面,並且實現介面中的方法

public class FirstServlet implements Servlet{
      private ServletConfig config = null;
     @Override
      public void init(ServletConfig config) throws ServletException {
               System.out.println("init方法執行了");
               this
.config = config; } @Override public ServletConfig getServletConfig() { return this.config; } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("service方法執行了"
); } @Override public String getServletInfo() { return null; } @Override public void destroy() { System.out.println("servlet銷燬了"); } }

2.在web.xml中新增Servlet的配置資訊

 <servlet>
       <servlet-name>FirstServlet</servlet-name>
        <servlet-class>com.chinasofti.servlet.FirstServlet</servlet-class>
  </servlet>
  <servlet-mapping>
       <servlet-name>FirstServlet</servlet-name>
       <url-pattern>/First</url-pattern>
  </servlet-mapping>

方式3:使用繼承HttpServlet方式建立Servlet的步驟:

1)編寫java類,繼承HttpServlet類
2)重新doGet和doPost方法
3)Servlet程式交給tomcat伺服器執行!!
>3.1 servlet程式的class碼拷貝到WEB-INF/classes目錄
>3.2 在web.xml檔案中進行配置
url的組成

1.當我們在瀏覽器輸入以上網址的時候,瀏覽器會向伺服器傳送請求,請求的網址就是上面的網址

2.伺服器接收到請求之後,首先會/First 擷取下來,然後從web.xml中檢視是否有匹配的url-pattern

3.如果有存在的url-pattern,則找到url-pattern對應的servlet-name,然後根據servlet-name找到具體的類

4.通過反射技術來建立這個類的物件,然後這個物件就可以工作了

關於url-pattern匹配的路徑:(掌握)

精確的路徑: /First /First/xxx (注意點:/不能漏掉)

模糊的路徑: /* .do .action

當輸入的url有多個url-pattern匹配的時候,絕對匹配> /開頭的模糊匹配>*.do結尾的模糊匹配

關於DefaultServlet:(掌握)
如果我們輸入的網址是localhost:8080/3.3Pro/index.html

1.會從web.xml中檢視是否有匹配index.html的url-pattern
2.如果沒有,則會交給tomcat內建的一個叫做DefaultServlet來處理這個請求
3.DefaultServlet會從當前的web應用查詢是否用index.html這個靜態頁面,如果有,則返回,如果沒有則404錯誤

Servlet的生命週期:(掌握)
生命週期的四個方法:

1.構造方法 : 無論訪問多少次,構造方法只會執行一次 (說明servlet物件是單例項的)
2.init方法 : 也會只執行一次
3.service方法 : 瀏覽器每訪問一次,就會執行一次
4.destory方法 : 停止伺服器或者重新部署應用的執行

關於Servlet的自動載入 : 啟動tomat伺服器的時候就建立servlet物件,對該物件進行初始化(掌握)

  <servlet>
      <servlet-name>FirstServlet</servlet-name>
      <servlet-class>com.chinasofti.servlet.FirstServlet</servlet-class>
      <load-on-startup>1</load-on-startup>        //值越高 ,優先順序越低
  </servlet>
  <servlet-mapping>
       <servlet-name>FirstServlet</servlet-name>
       <url-pattern>/First</url-pattern>
  </servlet-mapping>

關於GenericServlet中的init方法(瞭解)

注意:在GenericServlet中有兩個init方法,一個是來自父介面(Servlet)中的init方法,這個方法在GenericServlet中已經被實現過了,所以GenericServlet子類無需再去實現該方法。

如果GenericServlet子類還需要再去做一些初始化工作,則直接重寫GenericServlet類中的另外一個init方法就可以
(public void init() throws ServletException)

相關推薦

Java Web02深入servlet

servlet(重點) Servlet是執行在伺服器端的java小程式 我們建立的一個類要是Servlet,則它必須直接或者間接實現Servlet 如何建立一個Servlet 圖片總結:Servlet(曾祖父) –> GenericSer

Java開發深入剖析Netty框架源碼實戰視頻教程

應用 pipe 事件處理 recycle 源碼 詳細分析 netty flush sel 第1章 課程介紹介紹本課程需要的前提知識和內容概要 第2章 Netty基本組件使用一個簡單的socket例子概括Netty裏面的基本組件,包括NioEventLoop,Channel,

Java 乾貨深入理解String

可以證明,字串操作是計算機程式設計中最常見的行為,尤其是在Java大展拳腳的Web系統中更是如此。 ---《Thinking in Java》 提到Java中的String,總是有說不完的知識點,它對於剛接觸Java的人來說,有太多太多的值得研究的東西了,可是為什麼Java中的String這麼獨特呢?今天我

Java 乾貨深入理解Java內部類

可以將一個類定義在另一個類或方法中,這樣的類叫做內部類 --《Thinking in Java》 說起內部類,大家並不陌生,並且會經常在例項化容器的時候使用到它。但是內部類的具體細節語法,原理以及實現是什麼樣的可以不少人都還挺陌生,這裡作一篇總結,希望通過這篇總結提高對內部類的認識。 內部類是什麼? 由文章

Java 乾貨深入理解Java泛型

一般的類和方法,只能使用具體的型別,要麼是基本型別,要麼是自定義的類。如果要編寫可以應用多中型別的程式碼,這種刻板的限制對程式碼得束縛會就會很大。 ---《Thinking in Java》 泛型大家都接觸的不少,但是由於Java 歷史的原因,Java 中的泛型一直被稱為偽泛型,因此對Java中的泛型,有

Java基礎深入理解Class物件與反射機制

深入理解Class物件 RRIT及Class物件的概念 RRIT(Run-Time Type Identification)執行時型別識別。在《Thinking in Java》一書第十四章中有提到,它的功能是在執行時識別物件的型別和類資訊。有兩種主要方式:“傳統的”RTTI(它假定我們在編譯時

Java開發深入剖析Netty框架原始碼實戰視訊教程

第1章 課程介紹介紹本課程需要的前提知識和內容概要第2章 Netty基本元件使用一個簡單的socket例子概括Netty裡面的基本元件,包括NioEventLoop,Channel,ByteBuf,Pipeline,ChannelHandler第4章 NioEventLoop

Java併發深入分析synchronized的實現原理

稍微進行了整合目前在Java中存在兩種鎖機制:synchronized和Lock,Lock介面及其實現類是JDK5增加的內容,synchronized是個重量級鎖,是解決併發問題的一種最常用的方法,也是最簡單的一種方法,Java SE1.6對其進行了優化。synchroniz

Java基礎深入理解介面(interface)意義

在學習介面的時候,一致沒有理解透徹,再次學習時,發現要學習介面,必須要理解其運用場景。理解面向介面程式設計對理解介面非常有幫助。 首先面向介面程式設計和麵向物件程式設計並不是平級的,它並不是比面向物件程式設計更先進的一種獨立的程式設計思想,而是附屬於面向物件思想體系,屬於其

JAVA學習 淺析Servlet

一、什麼是Servlet        Servlet是一種在伺服器端執行的java編寫的程式,是按照Servlet規範編寫的一個java類。 二、Servlet的工作過程    如圖所示:為了實現客戶與伺服器端的動態互動,需要一個遵循HTTP協議的伺服器端應用軟體,來處理

Java webservlet

詳細講解 get() 註意 des api 一個 剛才 分享 ima 入坑必備之ser

【JavaNIO的深入研究4】內存映射文件I/O,大文件讀寫操作,Java nioMappedByteBuffer,高效文件/內存映射

int start lib 交換文件 bsp 沒有 res collected str time 內存映射文件能讓你創建和修改那些因為太大而無法放入內存的文件。有了內存映射文件,你就可以認為文件已經全部讀進了內存,然後把它當成一個非常大的數組來訪問。這種解決辦法能大大簡化修

Java學習servlet

exc pub 還要 關閉 內容 網站 welcome 類型 bug Servlet概述 生命周期方法: l void init(ServletConfig):出生之後(1次); l void service(ServletRequest request, ServletR

Java多線程深入理解synchronize關鍵字

tracking 而不是 方法 獲得 content cal art track () synchronize鎖重入: 關鍵字synchronize擁有鎖重入的功能,也就是在使用synchronize時,當一個線程的得到了一個對象的鎖後,再次請求此對象是可以再次得到

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletReques正確解決姿勢

原連結地址:https://blog.csdn.net/y970105/article/details/355401   如果在你所在開發過程中出現了: java.lang.NoClassDefFoundError: javax/servlet/ServletInputStre

【學習筆記】 唐大仕—Java程式設計 第5講 深入理解Java語言5.2 多型及虛方法呼叫

/** * 多型及虛方法呼叫 * @author cnRicky * @date 2018.11.7 */ 多型 多型(Polymorphism)是指一個程式中相同的名字表示不同的含義的情況 多型有兩種情形 編譯時多型:  *過載(Overload)(多個同名的不同方法)  *如 p.sayH

深入學習Java Scipt作用域和閉包

引擎與作用域及編譯器 在傳統的編譯語言的流程中,程式的一段原始碼主要分成三步,統稱為“編譯”   分詞/詞法分析     它的主要作用是將字元組成的字串分解成有意義的程式碼塊,例如:var a=2;者會被分解成“var”,“a”,“=”,

【學習筆記】 唐大仕—Java程式設計 第5講 深入理解Java語言5.3 物件構造與初始化

物件構造與初始化 構造方法 構造方法(constructor) 物件都有構造方法 如果沒有,編譯器加一個default構造方法 抽象類(abstract)有沒有構造方法? 答案:抽象類也有構造方法。實際上,任何類都有自己的構造方法

【學習筆記】 唐大仕—Java程式設計 第5講 深入理解Java語言5.4 物件清除與垃圾回收

/** * 物件清除與垃圾回收 * @author cnRicky * @date 2018.11.10 */ 物件清除與垃圾回收 物件清除 我們知道:new建立物件 那麼如何銷燬物件? Java中是自動清除 不需要使用delete等方法人為銷燬它

【學習筆記】 唐大仕—Java程序設計 第5講 深入理解Java語言5.4 對象清除與垃圾回收

let 要求 什麽 jdk1 style 1.10 垃圾 ati 內存 /** * 對象清除與垃圾回收 * @author cnRicky * @date 2018.11.10 */ 對象清除與垃圾回收 對象清除 我們知道:new創建對象 那麽如何銷毀對象? Java