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)
-
繼承HttpServlet
image.png -
重寫doGet()或者doPost()方法
image.png -
在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方法

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文件中指定的初始值

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頁面)。




