java:四 servlet入門詳解,遠離404

1.1. servlet簡介

servlet:1、接受瀏覽器發送過來的消息。

2、給瀏覽器返回消息。瀏覽器認識html。可以動態去輸出html

Request:請求。客戶端向服務端發送的信息。

Response:響應。服務器向客戶端放鬆的信息。

通常請求和響應是成對出現的。

作用:servlet 編寫一個程序生成網頁。

瀏覽器請求—servlet,servlet會生產html。把html傳送給瀏覽器(響應)。瀏覽器看到內容是html

sun公司提供過的servlet的api在javaEE的規範中。如果要使用servlet需要使用javaEE的api。(javeEE包)

javaEE相關的包,(myeclipse自帶。當新建一個web工程的時候,myeclipse會自動的把javaEE包導入工程中。)

注意:javaEE的api並不在jdk中。

1.2. servlet快速入門

1.2.1. 編寫servlet

寫servlet做兩件事

1、實現servlet接口。 由sun公司定義的一個接口。(定義一個規範)

2、把類部署到web服務器中(tomcat)。

sun公司定義一個servlet的規範。定義了servlet應該有哪些方法,以及方法需要的參數。

1、實現servlet接口(javax.servlet.Servlet)

public class Hello implements Servlet{} 實現servlet接口

實現接口的所有方法

public void service(ServletRequest requestred, ServletResponse responsered)

throws ServletException, IOException {

}

public void destroy() {

}

public ServletConfig getServletConfig() {

return null;

}

public String getServletInfo() {

return null;

}

public void init(ServletConfig arg0) throws ServletException {

}

2、重寫service方法

public void service(ServletRequest requestred, ServletResponse responsered)

throws ServletException, IOException {

System.out.println(“第次請求都會響應");

}

當瀏覽器輸入地址,訪問servlet的時候,servlet會執行servcie方法。

3、在WebRoot/WEB-INF/web.xml中配置servlet的路徑 。瀏覽器訪問servlet的路徑

web.xml(新建web工程的時候,myeclipse自動創建出來的)的位置:

在web.xml的根標籤下,直接書寫如下內日。

4、把項目部署到tomcat中,去啟動tomcat。在地址欄中輸入信息,訪問servlet

1.2.2. 訪問servlet

瀏覽器地址欄中輸入:http://localhost:8080/day09/hello

訪問過程分析:

1.2.3. servlet入門小結

1、快速創建一個serlvet。

1、創建一個類,去實現java.servlet.Serlvet 這個接口

2、重寫類中 service方法

3、在web-inf/web.xml 中去配置serlvet一些信息

servlet的訪問路徑

2、Servlet的訪問過程?

java:四  servlet入門詳解,遠離404

3、Servlet的api在那裡?javaEE的包裡面。

myeclipse在創建web工程的時候會自帶上。

tomcat的lib目錄中也包含了javaEE的包

1.3. servlet生命週期

servlet的生命週期。

什麼時候創建一個servlet。

什麼時候去銷燬一個servlet。

init方法:當服務器創建一個serlvet的時候,會去調用init方法。

當我們第一次去訪問一個servlet的時候,會去創建這個servlet對象。並且只會創建一次。

如果配置了load-on-startup 表示服務器啟動的時候創建servlet。

service方法:客戶端每一次請求,tomcat都會去調用servcie方法。處理用戶的請求。並且給其響應。

每一次請求都會調用servcie方法。

destroy 方法:當服務器銷燬一個servlet的時候,會調用裡面的destory方法。

當我們的web服務器,正常關閉的時候,會去調用destroy方法。

否則不會調用destroy的方法。

1.4. 快速創建一個servlet---掌握

知道:1、自己去定義的servlet 只需要繼承HttpServlet 就可以實現 servlet的接口了。

2、以後處理用戶的請求,都寫在doGet或者doPost方法中。

掌握:

1、如何藉助工具創建servlet

2、以後書寫的代碼 書寫在使用doGet 或者doPost 中。

步驟:new---servlet

我們自動創建創建的servlet 是繼承 httpServlet

GenericServlet 實現了。servlet的接口。

所以安裝工具類創建的servlet ,也是實現了servlet的接口

GenericServlet 已經對一些servlet中定義方法進行了實現。

HttpServlet 是GenericServlet的子類。針對http協議的 包含了一些協議相關的內容的servlet。

我們在通過工具去創建的servlet中,要重寫的方法是doGet,doPost . ( post,get提交數據的方式,是http協議中的。)

獲取http請求的方式。post 和get

因為httpServlet中, service方法回去調用doGet或者doPost. 可以根據不同的請求方法,進行不同的處理。

1.5. 去除servlet模板:

找到myeclipse的按裝路徑,common搜plugins下面的com.genuitec.eclipse.wizards,用解壓工具打開找到templates/servlet.java

注意:一定要先關閉myeclipse,再進行修改

1.6. url-pattern三種配置

url-pattern 配置servlet的訪問路徑。

1、完全路徑匹配,以”/”開頭 後面是具體的路徑信息。

你輸入什麼內容。訪問的時候,就需要輸入什麼內容,才可以找到對應的servlet

例如

/hello

在訪問的時候 http://ip:端口/應用名/hello 才可以找到hello的servlet

2、目錄匹配,以/*結尾

例如 /abc/* ---這這個url-patten 對應的servlet

在訪問的時候只有/abc/xx /abc/dd /abc/cc

http://ip:端口/abc/abx

http://ip:端口/abc/bdsf

/abc/ssss

/abc/fdsafd/asdf/asdf

3、擴展名匹配 *.擴展名

*.do

*.action

當訪問的時候 輸入a.do b.do

/ddd/asdf/a.do

訪問的時候aa.do

/abc/a.do

在url進行匹配的時候,會尋找更具體的進行匹配

1.7. web中的資源路徑

告訴大家:如何去訪問一個web中的資源。

web資源路徑訪問的問題;

1、部署工程文件的位置

WebRoot 下所有資源全部發布到服務器webapps 目錄應用名下 所有靜態頁面放在WebRoot 下或者 WebRoot 子目錄

項目部署的時候,會把工程中的WebRoot這個文件夾拷貝到tomcat的webapps目錄下。把WebRoot文件夾的名字修改成項目的目錄名字;

考慮問題:

在webroot外面去創建了一個html a.html

java:四  servlet入門詳解,遠離404

此時a.html 不能被訪問的。 因為項目部署的時候,至部署了。webRoot 裡面的內容。

以後我們把html文件,css。js都放到webRoot 下

java:四  servlet入門詳解,遠離404

在瀏覽器中,如何去訪問一個html內容。

http://localhost:8080/day09/直接書寫html文件的路徑,相對與WEBROOT這個文件夾路徑

例如b.html 和c.html的訪問路徑可以是:

http://localhost:8080/day09/b.html

http://localhost:8080/day09/html/c.html

關於servlet 。在web.xml中進行配置servlet路徑 url-pattern . 相當於servlet的訪問路徑

之前的內容:http://localhost:8080/day09/url-pattern

例如我們在web.xml中配置了

訪問的時候,可以書寫:http://localhost:8080/day09/login

2: 源碼 servlet 全部在src ---> 映射 WEB-INF / classes 目錄下!!

src存放的java源文件。

把java文件進行編譯,編譯好的classes放到到WEB-INF/classes。

項目中的資源訪問的路徑的問題

瀏覽器輸入什麼樣的路徑信息,才可以找到對應的資源。

1.7.1. 如果有一個表單。表單的內容提交到servlet中,怎麼去書寫路徑

在html的頁面 。書寫 / 表示的內容 http://localhost:8080

java:四  servlet入門詳解,遠離404

1.7.2. 相對路徑

相對路徑的寫法

hello 統一個文件夾下

./hello 統一個文件夾下

../ 表示上一層目錄

使用相對路徑的時候,需要進行路徑的比對

例如在

http://localhost:8080/day09/hello.html

http://localhost:8080/day09/login

那麼在hello.html 這個頁面,可以理解為 hello.html 和 login 在一個路徑下

1.7.3. 絕對路徑

分為服務器端和客戶端(瀏覽器)

•Web系統中的相對路徑和絕對路徑

–絕對路徑:/hello /myweb/hello

•服務器端和客戶端對於/ 的區別

如果是在服務器端 / 表示的是 http://localhost:8080/day9

客戶端 http://localhost:8080

客戶端關於路徑問題的編程結論

*.html *.jsp 內都使用絕對路徑

*.css 內部使用相對路徑---- 背景圖片

*.js中使用絕對路徑

1.7.4. servletConfig說明

servletConfig 是一個對象。javaee規範中定義的一個對象。要求web服務器(tomcat),創建一個servlet的同時,也要去創建一個servletConfig對象。還要給servlet去使用。

serlvetConfig 是我們servlet 一些的配置信息。如果一個servlet 使用的過程中需要一些參數信息。這些參數信息,可以配置到servletConfig中。 之後servlet去使用。

serlvetConfig對象使用總結:

1、如果servlet需要一些參數。我們可以在servlet這個標籤內去進行配置(web.xml)

java:四  servlet入門詳解,遠離404

2、tomcat去工作:讀取servlet中init-param這個標籤。把裡面的內容封裝到servletConfig對象中。

3、tomcat去工作,調用servlet中init方法。把封裝好的servletConfig對象。傳遞到對應的servlet中。

4、如何去使用:

4.1 需要獲取servletConfig,getServletConfig方法去獲取對象

4.2獲取裡面具體的值。servletConfig.getInitParameter(key);

java:四  servlet入門詳解,遠離404

示例

web.xml

java:四  servlet入門詳解,遠離404

servlet.java

java:四  servlet入門詳解,遠離404

1.7.5. servletContext說明

ServletContext是整個web項目應用程序運行後的代表對象。(代表當前一個項目)可以通過ServletConfig的getServletContext() 的方法得到,然後可以用該對象取得整個應用程序的相關資源或者信息。

統計一個網站的訪問量: (多個不同的servlet 都可以進行訪問)

java:四  servlet入門詳解,遠離404

配置全局的字符集:(所有的serlvet都可以使用)

java:四  servlet入門詳解,遠離404

ServletConfig:一個servlet被實例化後,對任何客戶端在任何時候訪問有效,但僅對本servlet

有效,一個servlet的ServletConfig對象不能被另一個servlet訪問。

ServletContext:對任何servlet,任何人在任何時間都有效,等於是全局的對象。


分享到:


相關文章: