一、Servlet簡介 Servlet是sun公司提供的一門用于開發(fā)動態(tài)web資源的技術。 二、ServletAPI三、Servlet的方法四、Servlet的運行Servlet程序是由WEB服務器調用,web服務器收到客戶端的Servlet訪問請求后: 五、Servlet生命周期其中,加載和實例化,初始化,銷毀都只進行一行 五、Serlvet部署5.1、新建類Myservlet3繼承HttpServlet重寫doGet,doPost,destroy(),init方法 package com.pb.servletdemo; import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Myservlet3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet方法被調用"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doPost方法被調用"); } /*@Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub super.service(arg0, arg1); }*/ @Override public void destroy() { System.out.println("Servlet銷毀,destroy方法被調用"); } @Override public void init(ServletConfig config) throws ServletException { System.out.println("Servlet初始化,init方法被調用"); String initParam=config.getInitParameter("charSetContent"); System.out.println(initParam); } } 5.2、在web.xml中配置<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns="http://java./xml/ns/javaee" xsi:schemaLocation="http://java./xml/ns/javaee http://java./xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>servletdemo</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 首先是servlet標簽 --> <servlet> <!-- 指定servlet的名字 可以與建立的servlet名字不一樣,別名--> <servlet-name>myserlvet</servlet-name> <!-- servlet的類名 包名.類名的完整路徑--> <servlet-class>com.pb.servletdemo.Myservlet3</servlet-class> <!-- 初始參數 --> <init-param> <!-- 設置字符集 --> <param-name>charSetContent</param-name> <!--值 --> <param-value>utf-8</param-value> </init-param> </servlet> <!-- 截獲請求 servlet映射--> <servlet-mapping> <!-- 些servlet-name要與上方的servlet-name名字一樣不然會報錯 --> <servlet-name>myserlvet</servlet-name> <!-- 一個servlet可以 有多個url-pattern--> <!-- 精確匹配 --> <url-pattern>/myservlet3</url-pattern> <!-- 加上虛擬目錄 --> <url-pattern>/demo/myservlet3</url-pattern> <!-- 通配符來配置* --> <url-pattern>/*</url-pattern> <!-- 后綴名來配置 --> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> 5.3、精確匹配5.4、虛擬目錄匹配--可以有多個虛擬目錄5.5、*通配符5.6、后綴名來訪問六、url-pattern6.1、url-pattern 概述<url-pattern>元素,用于把一個Servlet 別名映射為一個URL 訪問規(guī)則。在Servlet 的配置過程中,我們首先使用servlet 元素中的servlet-name、servlet-class 等子元素把一個Servlet 實現類映射為一個別名,然后再使用servlet-mapping 元素把這個別名映射為一個可以在瀏覽器中訪問的url,我們對Servlet 的訪問正是通過這個URL 進行的。而不是通過別名。因此,配置這個URL 是Servlet 配置過程中非常重要的一個環(huán)節(jié)。那么我們應該如何對這個URL進行配置呢?也就是說url-pattern 有幾種配置規(guī)則呢?在配置url-pattern 元素的時候,有這樣三種規(guī)則,分別是精確匹配、目錄匹配和后綴匹配。 6.2、精確匹配所謂的精確匹配,就是我們在使用瀏覽器訪問一個 Servlet 的時候,輸入的URL 中除了工程名之前的部分之外要和我們在配置Servlet 時,配置的url-pattern 元素要完全一致。比如說,在下面實例中,配置了一個名稱為 HelloServlet 的Servlet,它的url-pattern 我們配置為/helloServ , 那么這個配置就是完全匹配的方式。假如說我們這個工程的名字是 <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>javaee.sg.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/helloServ</url-pattern> </servlet-mapping> 6.3、目錄匹配相對于精確匹配,目錄匹配是一種相對靈活的配置方式,它以斜杠開始,以星號結尾,并且規(guī)定了一個虛擬的目錄。為了更加形象的說明這種配置方式,我們仍然以剛才的例子進行說明,比如說剛才的那個Servlet,它的url-pattern 我們就可以使用這種形式進行配置: <servlet-name>HelloServlet</servlet-name> <url-pattern>/helloServ/*</url-pattern> 在這個url-pattern 中,我們使用了一個虛擬的目錄, helloServ,那么我們在訪問這個Servlet 的時候輸入的URL 就會有多種選擇,我們只要保證這個URL 中,除了工程 6.4、后綴匹配用后綴進行匹配的方 <servlet-name>HelloServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 在這個配置當中,我們限定了訪問這個Servlet 的后綴名是”.do”。也就是說,當我們的URL 中的服務器地址,端口號,工程名這些項沒有錯誤的情況下,只要url 以”.do”結尾,就 6.5、注意事項在配置 Servlet 的過程中,大家需要注意的另外一點就是一個Servlet 配置元素可以同時對應多個Servlet-mapping 元素, 比方說,我們仍然以剛才所介紹的HelloServlet 為例,大家看這段代碼: <servlet-mapping> <servlet-name> HelloServlet </servlet-name> <url-pattern>/helloServ</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> HelloServlet </servlet-name> <url-pattern>/helloServ/* </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> HelloServlet </servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 在這段代碼中,我們?yōu)閯e名為HelloServlet 的Servlet 配置了3 個servlet-mapping 元素。既然我們可以為同一個Servlet 同時配置多個servlet-mapping,那么當客戶端在訪問這個servlet 的時候,servlet 容器是按照一個什么樣的順序來查找servlet 的呢?當為同一個Servlet 配置了多個servlet-mapping 的時候,servlet 容器首先將按照精確 七、在eclipse中創(chuàng)建Servlet選擇需要的方法 分類: Java Web基礎
|
|