溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

我對Servlet的理解

發布時間:2020-07-15 09:40:17 來源:網絡 閱讀:428 作者:智者無疆 欄目:開發技術

Servlet是java web中的動態資源,是三大組件(Servlet,Filter,Listener)之一,用于處理客戶端的請求,并作出相應,具體用法為:

一,實現Servlet的三種方式:

1.實現javax.servlet.Servlet接口

    public class ServletOne implements Servlet{

        public void destroy(){}

        public ServletConfig getServletConfig(){}

        public String getServletInfo(){}   

        public void init(ServletConfig arg0) throws ServletException {}

        public void service(ServletRequest request, ServletResponse response) 

               throws ServletException, IOException {}

    }

   (1).init()方法在Servlet創建時被調用

   (2).destroy()方法在Servlet銷毀時創建

   (3).service()方法每請求一次servelt調用一次

2.繼承javax.servlet.GenericServlet,并重寫其所有的抽象方法

    public class ServletTwo extends GenericServlet{

        @Override

        public void service(ServletRequest request, ServletResponse response)  throws ServletException, IOException {}

    }

3.繼承javax.servlet.http.HttpServlet

    public class ServletFour extends HttpServlet {

        protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {}

        protected void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {}

    }

    (1).doGet()處理get請求

    (2).doPost()處理post請求

    注:用此方法實現的Servlet只能處理http協議的請求


二,配置Servlet

    通過以上方式定義好了一個Servlet,但此時的Servlet還不能處理客戶端請求,因為沒有給此Servlet指定處理來自客戶端的那個請求,因此要把此Servlet配置成能處理客戶端請求的Servlet。在WebContent/WEB-INF/web.xml中配置如下: 

    <servlet>

        <servlet-name>one</servlet-name>

        <servlet-class>com.web.servlet.ServletOne</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>one</servlet-name>

        <url-pattern>/one</url-pattern>

    </servlet-mapping>

    一個<servlet>標簽就把一個Servlet和一個名字綁定在了一起,一個<servlet-mapping>標簽就把一個servlet名字和一個路徑綁定在了一起,因此經過此配置客戶端就可以通過訪問  http://localhost:8080/項目名/one  這一個路徑來訪問 com.web.servlet.ServletOne 這個Servlet。當然一個<servlet-mapping> 標簽也可以有多個<url-pattern>標簽,來給一個Servlet綁定多個訪問路徑,如:   

            <servlet-mapping>

            <servlet-name>TServlet</servlet-name>

            <url-pattern>/login</url-pattern>

            <url-pattern>/log</url-pattern>

            </servlet-mapping>

也可以在<servlet-mapping>標簽中使用通配符*來指定訪問路徑,但是*不能出現在路徑的中間位置如:

            <url-pattern>/servlet/*</url-pattern>    對的          

            <url-pattern>*.do</url-pattern>          對的

    <url-pattern>/*.do</url-pattern>         錯的

    那么就會出現一個地址同時匹配一個精確的<url-pattern>和一個使用了通配符的<url-mapping>,此時會優先選擇精確<url-mapping>所綁定的Servlet。


三,域對象

    域對象是指在一定作用域被共享的對象,在Servlet中有四大域對象:ServletContext,HttpSession,ServletRequest,PageContext,注意:PageContext是jsp的九大內置對象之一,因為jsp是一個特殊的Servlet,故這里將PageContext也算在內。域對象通用的操作屬性的方法為:

    void setAttribute(String name,Object obj)   網域對象中保存一個屬性

    Object getAttribute(String name)            從域對象中獲取一個屬性值

    void removeAttribute(String name)           從域對象中移除一個屬性


四,獲取資源文件

1.獲取資源的真實路徑:

    ServletContext context = getServletContext()

    String path = context.getRealPath("/a.txt")

2.獲取資源流:

    InputStream in = context.getResourceAsStream("/a.txt")

注:以上參數必須以 / 開頭,表示相對于項目

3.獲取類路徑下的資源

    對于web項目來說,當把項目發布后就沒有 src 這個目錄,所以在拿類路徑下的資源文件時,就不能用 new InputStream("") 這種方式來獲取。此時src目錄就相當于WebContent/WEB-INF/classes目錄,可以用兩種方式來獲取

    (1).類.getResourceAsStream(String path)

        path以 / 開頭表示路徑相對于 classes

        path不以 / 開頭表示路徑相對于當前類

    (2).類.getClassLoader().getResourceAsStream(String path)

        此時path只想對于classes










向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女