Java Web基礎(chǔ)學(xué)習(xí)---Servlet

1.什么是servlet

jsp的前生就是servlet,servlet就是在服務(wù)器端上運行的小程序,一個servlet就是一個java類,并且可以通過"請求-響應(yīng)",編程模型來訪問這個駐留在服務(wù)器內(nèi)存里的servlet程序

2. 手工編寫第一個Servlet

Servlet層級關(guān)系:
Servlet(接口)-->GenericServlet(抽象類,與協(xié)議無關(guān)的Servlet)-->HttpServlet(抽象類,實現(xiàn)了Http協(xié)議的Servlet)-->Custom Servlet(自定義的Servlet)

  1. 繼承HttpServlet


    image.png
  2. 重寫doGet()或者doPost()方法


    image.png
  3. 在Web.xml中注冊Servlet


    image.png

    通常我們使用Myeclipse直接創(chuàng)建Servlet


    image.png

3.servlet執(zhí)行流程

get方式請求HelloServlet,首先用戶在頁面點擊超鏈接,服務(wù)器會根據(jù)這個超鏈接地址掃描web.xml,找出對應(yīng)的連接url,再找到對應(yīng)的name,再根據(jù)name找到類的地址,超鏈接代表get請求,調(diào)用do get方法


image.png

4.Servlet與九大內(nèi)置對象的對應(yīng)關(guān)系:

1、JSP的——out對象 Servlet——response.getWriter
(嚴格意義上講這兩個類型是不匹配的response.getWriter()獲得的是PrintWriter類型的對象,out是JspWriter類型的對象,都可以對瀏覽器進行輸出,但類型是不一樣的。
2、JSP——request對象 Servlet——通過service方法中的request參數(shù)獲取,也可以通過doGet、doPost方法中的參數(shù)來獲取。
3、JSP——response對象 Servlet——通過service方法中的response參數(shù)獲取,也可以通過doGet、doPost方法中的參數(shù)來獲取。
4、JSP——session對象 Servlet——通過傳進來的request的getSession()方法來獲取。
5、JSP——application對象 Servlet——通過Servlet中的geServletContext()函數(shù)來獲取。
6、JSP——exception對象 Servlet——通過拋出異常Throwable方式來獲取。
7、JSP——page對象 Servlet——對應(yīng)this對象。
8、JSP——pageContext對象 Servlet——對應(yīng)PageContext對象。
9、JSP——Config對象 Servlet——通過Servlet中的getServletConfig函數(shù)來獲取。

5.Servlet路徑跳轉(zhuǎn)

一、JSP跳轉(zhuǎn)到Servlet
1、相對路徑,如href="servlet/TestServlet"
***注意:如果寫成"/servlet/TestServlet"會報錯,因為第一個'/'表示的是【服務(wù)器根目錄:http://localhost:8080/
2、絕對路徑,通過內(nèi)置成員變量path實現(xiàn),如href="<%=path%>/servlet/TestServlet"。
***注意:這里的path得到的是項目根目錄,如【http://localhost:8080/Servlet002_GetFormDemo

二、Servlet跳轉(zhuǎn)JSP
1、請求重定向:response.sendRedirect(request.getContextPath()+"/xxx.jsp");這里通過request.getContextPath()方法獲得項目根目錄,或者通過"../xxx.jsp"取得上層路徑得到
2、服務(wù)器內(nèi)部轉(zhuǎn)發(fā):request.getRequestDispatcher("../xxx.jsp").forward(req,resp);
小結(jié):都可以通過../xxx.jsp得到

6.獲取初始化參數(shù)

在web.xml中配置servlet時,可以配置一些初始化參數(shù),而在servlet中可以通過servletConfig接口提供的方法類取得這些參數(shù),如下圖紅框中在web.xml文件中初始化參數(shù)


通過類里面的init()方法,this.getInitParameter("password")來從xml配置文件中獲取類屬性password所指定的初始值,如下圖中定義username和password兩個屬性,在init()中獲取xml文件中指定的初始值


image.png

7.model2模型

在之前的JSP學(xué)習(xí)中介紹了Model1模型,即JSP+javabean模型,這里介紹第二種模型Model2模型.
java Web的model2開發(fā)模型就是MVC(模型層,視圖層,控制層)思想的體現(xiàn)
充當模型層的是JavaBean,充當控制層的是Servlet,充當視圖層的是JSP。然后要訪問的數(shù)據(jù)就在數(shù)據(jù)庫層
工作原理:
首先由JSP頁面向控制層提交請求,然后由控制層Servlet實例化一個模型層的對象,或者說是調(diào)用一些模型層的功能,然后由模型層訪問數(shù)據(jù)庫層(讀取數(shù)據(jù)庫),模型層得到結(jié)果后再反饋給控制層,控制層根據(jù)得到的結(jié)果選擇給用戶呈現(xiàn)不同的頁面(跳轉(zhuǎn)到不同的JSP頁面)。


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容