<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 什么是Servlet Servlet 運行在服務端的Java小程序,是sun公司提供一套規范(接口),用來處理客戶端請求、響應給瀏覽器的動態資源。但servlet的實質就是java代碼,通過java的API 動態的向客戶端輸出內容 servlet規范:包含三個技術點 1)servlet技術 2)filter技術---過濾器 3)listener技術---監聽器 # 配置 ![](https://box.kancloud.cn/3835e0016d8da9718df19a020923bca4_432x236.png) ~~~ <!-- servlet類的配置 --> <servlet> <servlet-name>first</servlet-name> <servlet-class>study.MyFirst</servlet-class> <init-param> <param-name>url</param-name> <param-value>jdbc:mysql:///mydb</param-value> </init-param> <!-- servlet在啟動的時候創建對象,里面數字代表優先級,越小優先級越大 --> <load-on-startup>3</load-on-startup> </servlet> <!-- servlet虛擬路徑配置 --> <servlet-mapping> <servlet-name>first</servlet-name> <url-pattern>/abc</url-pattern> </servlet-mapping> ~~~ 其中url-pattern的配置方式: 1)完全匹配 訪問的資源與配置的資源完全相同才能訪問到 2)目錄匹配 格式:/虛擬的目錄../* *代表任意 3)擴展名匹配 格式:*.擴展名 注意:第二種與第三種不要混用 /aaa/bbb/*.abcd(錯誤的) 2.服務器啟動實例化Servlet配置 Servlet的何時創建:默認第一次訪問時創建 為什么是默認? 當在servlet的配置時 加上一個配置 <load-on-startup> servlet對象在服務器啟動 時就創建 3.缺省Servlet 可以將url-pattern配置一個/,代表該servlet是缺省的servlet 什么是缺省的servlet? 當你訪問資源地址所有的servlet都不匹配時 , 缺省的servlet負責處理 其實,web應用中所有的資源的響應都是servlet負責,包括靜態資源 4.歡迎頁面 ![](https://box.kancloud.cn/462f7c080826e2ee053408a46ce72541_330x148.png) # 實現步驟 實現步驟: 1)創建類實現Servlet接口 2)覆蓋尚未實現的方法---service方法 3)在web.xml進行servlet的配置 但在實際開發中,我們不會直接去實現Servlet接口,因為那樣需要覆蓋的方法太多, 我們一般創建類繼承HttpServlet 實現步驟: 1)創建類繼承HttpServlet類 2)覆蓋doGet和doPost 3)在web.xml中進行servlet的配置 # 整個請求對象 ![](https://box.kancloud.cn/5aa7f697938776fecf25257e2a020412_503x346.png) 每次請求都會創建新的請求和響應對象 # 生命周期 **Servlet接口中的方法** 1)init(ServletConfig config) 何時執行:servlet對象創建的時候執行 ServletConfig : 代表的是該servlet對象的配置信息 ~~~ public void init(ServletConfig arg0) throws ServletException { // 1.獲得servlet的---<servlet-name>abc</servlet-name> String servletName = arg0.getServletName(); System.out.println(servletName); // 2.獲得該servlet的初始化參數 String initParameter = arg0.getInitParameter("url"); System.out.println(initParameter); //3.獲得Servletcontext對象,這個對象是局部的 ServletContext servletContext = (ServletContext) arg0.getServletContext(); } ~~~ 2)service(ServletRequest request,ServletResponse response) 何時執行:每次請求都會執行 ServletRequest :代表請求 認為ServletRequest 內部封裝的是 http請求的信息 ServletResponse :代表響應 認為要封裝的是響應的信息 3)destroy() 何時執行:servlet銷毀的時候執行 **HttpServlet類的方法** 1)init() 2)doGet(HttpServletRequest request,HttpServletResponse response) 3)doPost(HttpServletRequest request,HttpServletResponse response) 4)destroy() (3)Servlet的生命周期(面試題) 1)Servlet何時創建 默認第一次訪問servlet時創建該對象 2)Servlet何時銷毀 服務器關閉servlet就銷毀了 3)每次訪問必然執行的方法 service(ServletRequest req, ServletResponse res)方法 # ServletContext對象 ## 什么是ServletContext對象 ServletContext代表是一個web應用的環境(上下文)對象,ServletContext對象 內部封裝是該web應用的信息,ServletContext對象一個web應用只有一個 問題:一個web應用有幾個servlet對象?----多個 ServletContext對象的生命周期? 創建:該web應用被加載(服務器啟動或發布web應用(前提,服務器啟動狀態)) 銷毀:web應用被卸載(服務器關閉,移除該web應用) ## 怎樣獲得ServletContext對象 1)ServletContext servletContext = config.getServletContext(); 2)ServletContext servletContext = this.getServletContext(); ## ServletContext的作用 (1)獲得web應用全局的初始化參數 web.xml中配置初始化參數 ![](https://box.kancloud.cn/f0907260cfd411e67db3570898b2e33b_388x92.png) 通過context對象獲得參數 ![](https://box.kancloud.cn/9789c9ffb60f80681fc24eb4d066b189_452x99.png) (2)獲得web應用中任何資源的絕對路徑 方法:String path = context.getRealPath(相對于該web應用的相對地址); ~~~ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //獲得ServletContext對象 ServletContext context = getServletContext(); //1、獲得初始化參數 String initParameter = context.getInitParameter("driver"); System.out.println(initParameter); //2、獲得a b c d.txt的絕對路徑 //2.1 獲得a.txt String realPath_A = context.getRealPath("a.txt"); System.out.println(realPath_A); //2.2 獲得b.txt String realPath_B = context.getRealPath("WEB-INF/b.txt"); System.out.println(realPath_B); //2.3 獲得c.txt String realPath_C = context.getRealPath("WEB-INF/classes/c.txt"); System.out.println(realPath_C); //在讀取src(classes) 下的資源是可以同類加載器----專門加載classes 下的文件的 //getResource() 參數是一個相對地址 相對classes //ContextServlet是我這個文件的類名,換成自己類的名字就行 String path = ContextServlet.class.getClassLoader().getResource("c.txt").getPath(); System.out.println(path); //3、域對象---向servletContext中存數據,小的向大的存,大的不能向小的存 context.setAttribute("name", "zhangsan"); } ~~~ (3)ServletContext是一個域對象 什么是域對象?什么是域? 存儲數據的區域就是域對象 ServletContext域對象的作用范圍:整個web應(所有的web資源都可以隨意向 servletcontext域中存取數據,數據可以共享) 域對象的通用的方法: setAtrribute(String name,Object obj); getAttribute(String name); removeAttribute(String name); # eclipse模板 command+, 打開配置搜templates,是java下面的 點擊new ![](https://box.kancloud.cn/8baa8a3f5070e01b97ff6aefb30f58bf_1272x1060.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看