乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Servlet一(web基礎(chǔ)學(xué)習(xí)筆記二十)

       quasiceo 2018-09-19

      一、Servlet簡(jiǎn)介

        Servlet是sun公司提供的一門用于開發(fā)動(dòng)態(tài)web資源的技術(shù)。
        Sun公司在其API中提供了一個(gè)servlet接口,用戶若想用發(fā)一個(gè)動(dòng)態(tài)web資源(即開發(fā)一個(gè)Java程序向?yàn)g覽器輸出數(shù)據(jù)),需要完成以下2個(gè)步驟:
        1、編寫一個(gè)Java類,實(shí)現(xiàn)servlet接口。
        2、把開發(fā)好的Java類部署到web服務(wù)器中。
        按照一種約定俗成的稱呼習(xí)慣,通常我們也把實(shí)現(xiàn)了servlet接口的java程序,稱之為Servlet

      二、ServletAPI

      三、Servlet的方法

      四、Servlet的運(yùn)行

      Servlet程序是由WEB服務(wù)器調(diào)用,web服務(wù)器收到客戶端的Servlet訪問請(qǐng)求后:
       ?、賅eb服務(wù)器首先檢查是否已經(jīng)裝載并創(chuàng)建了該Servlet的實(shí)例對(duì)象。如果是,則直接執(zhí)行第④步,否則,執(zhí)行第②步。
       ?、谘b載并創(chuàng)建該Servlet的一個(gè)實(shí)例對(duì)象。 
       ?、壅{(diào)用Servlet實(shí)例對(duì)象的init()方法。
       ?、軇?chuàng)建一個(gè)用于封裝HTTP請(qǐng)求消息的HttpServletRequest對(duì)象和一個(gè)代表HTTP響應(yīng)消息的HttpServletResponse對(duì)象,然后調(diào)用Servlet的service()方法并將請(qǐng)求和響應(yīng)  對(duì)象作為參數(shù)傳遞進(jìn)去。
       ?、軼EB應(yīng)用程序被停止或重新啟動(dòng)之前,Servlet引擎將卸載Servlet,并在卸載之前調(diào)用Servlet的destroy()方法。 

      五、Servlet生命周期

      其中,加載和實(shí)例化,初始化,銷毀都只進(jìn)行一行

       五、Serlvet部署

      5.1、新建類Myservlet3繼承HttpServlet

      重寫doGet,doPost,destroy(),init方法

      復(fù)制代碼
      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方法被調(diào)用");
          }
      
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                  throws ServletException, IOException {
              System.out.println("doPost方法被調(diào)用");
          }
      
          /*@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方法被調(diào)用");
          }
      
          @Override
          public void init(ServletConfig config) throws ServletException {
              System.out.println("Servlet初始化,init方法被調(diào)用");
              String initParam=config.getInitParameter("charSetContent");
              System.out.println(initParam);
              
          }
      
      }
      復(fù)制代碼

      5.2、在web.xml中配置

      復(fù)制代碼
      <?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標(biāo)簽 -->
        <servlet>
        <!-- 指定servlet的名字 可以與建立的servlet名字不一樣,別名-->
        <servlet-name>myserlvet</servlet-name>
        <!-- servlet的類名   包名.類名的完整路徑-->
        <servlet-class>com.pb.servletdemo.Myservlet3</servlet-class>
        <!-- 初始參數(shù) -->
        <init-param>
        <!-- 設(shè)置字符集 -->
        <param-name>charSetContent</param-name>
        <!---->
        <param-value>utf-8</param-value>
        </init-param>
        </servlet>
        <!-- 截獲請(qǐng)求 servlet映射-->
        <servlet-mapping>
        <!-- 些servlet-name要與上方的servlet-name名字一樣不然會(huì)報(bào)錯(cuò) -->
        <servlet-name>myserlvet</servlet-name>
        <!-- 一個(gè)servlet可以 有多個(gè)url-pattern-->
        <!-- 精確匹配 -->
        <url-pattern>/myservlet3</url-pattern>
        <!-- 加上虛擬目錄 -->
        <url-pattern>/demo/myservlet3</url-pattern>
        <!-- 通配符來(lái)配置* -->
        <url-pattern>/*</url-pattern>
        <!-- 后綴名來(lái)配置 -->
        <url-pattern>*.do</url-pattern>
        </servlet-mapping>
        
      </web-app>
      復(fù)制代碼

      5.3、精確匹配

      5.4、虛擬目錄匹配--可以有多個(gè)虛擬目錄

      5.5、*通配符

      5.6、后綴名來(lái)訪問

      六、url-pattern 

      6.1、url-pattern 概述

      <url-pattern>元素,用于把一個(gè)Servlet 別名映射為一個(gè)URL 訪問規(guī)則。在Servlet 的配置過(guò)程中,我們首先使用servlet 元素中的servlet-name、servlet-class 等子元素把一個(gè)Servlet 實(shí)現(xiàn)類映射為一個(gè)別名,然后再使用servlet-mapping 元素把這個(gè)別名映射為一個(gè)可以在瀏覽器中訪問的url,我們對(duì)Servlet 的訪問正是通過(guò)這個(gè)URL 進(jìn)行的。而不是通過(guò)別名。因此,配置這個(gè)URL 是Servlet 配置過(guò)程中非常重要的一個(gè)環(huán)節(jié)。那么我們應(yīng)該如何對(duì)這個(gè)URL進(jìn)行配置呢?也就是說(shuō)url-pattern 有幾種配置規(guī)則呢?在配置url-pattern 元素的時(shí)候,有這樣三種規(guī)則,分別是精確匹配、目錄匹配和后綴匹配。

      6.2、精確匹配

      所謂的精確匹配,就是我們?cè)谑褂脼g覽器訪問一個(gè) Servlet 的時(shí)候,輸入的URL 中除了工程名之前的部分之外要和我們?cè)谂渲肧ervlet 時(shí),配置的url-pattern 元素要完全一致。比如說(shuō),在下面實(shí)例中,配置了一個(gè)名稱為 HelloServlet 的Servlet,它的url-pattern 我們配置為/helloServ , 那么這個(gè)配置就是完全匹配的方式。假如說(shuō)我們這個(gè)工程的名字是
      TestServlet,我們的Web 服務(wù)器的端口號(hào)為8080,那么在瀏覽器中訪問本地的這個(gè)Servlet的時(shí)候就需要使用這樣的URL:http://127.0.0.1:080/TestServlet/helloServ。其中,127.0.0.1 是保留的IP 地址,指代本機(jī),8080 是我們?cè)O(shè)置的Web 服務(wù)器的端口號(hào),TestServlet是我們這個(gè)Servlet 所在的Web 項(xiàng)目的名稱。而最后面的這個(gè)helloServ 就是我們配置的需要完全匹配的Servlet 的URL pattern。

      復(fù)制代碼
      <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>
      復(fù)制代碼

      6.3、目錄匹配

      相對(duì)于精確匹配,目錄匹配是一種相對(duì)靈活的配置方式,它以斜杠開始,以星號(hào)結(jié)尾,并且規(guī)定了一個(gè)虛擬的目錄。為了更加形象的說(shuō)明這種配置方式,我們?nèi)匀灰詣偛诺睦舆M(jìn)行說(shuō)明,比如說(shuō)剛才的那個(gè)Servlet,它的url-pattern 我們就可以使用這種形式進(jìn)行配置:

      <servlet-name>HelloServlet</servlet-name>
      <url-pattern>/helloServ/*</url-pattern>

      在這個(gè)url-pattern 中,我們使用了一個(gè)虛擬的目錄, helloServ,那么我們?cè)谠L問這個(gè)Servlet 的時(shí)候輸入的URL 就會(huì)有多種選擇,我們只要保證這個(gè)URL 中,除了工程
      名之外的部分以這個(gè)虛擬目錄helloServ 開始就可以了。比方說(shuō),我們可以使用這樣的URL 訪問這個(gè)Servlet:http://127.0.0.1:8080/ TestServlet/helloServ/theServlet。在這個(gè)URL中, TestServlet 是這個(gè)Web 項(xiàng)目的工程名。 helloServ 是虛擬目錄的名稱,最后面的theServlet 是我們?cè)谠L問的時(shí)候隨機(jī)輸入的一個(gè)名稱。這個(gè)名稱可以替換為其他的名稱,比方說(shuō)替換為thisServlet 或者thatServlet 等等??傊?,在工程名TestServlet 之后緊跟虛擬目錄的名稱就可以了。

      6.4、后綴匹配

      用后綴進(jìn)行匹配的方
      式。在這種方式中,url-pattern 配置元素只限定了訪問Servlet 的后綴名,而對(duì)于虛擬目錄、名稱都沒有要求。比方說(shuō),我們?cè)侔褎偛排渲玫腟ervlet 做一個(gè)修改,在url-pattern 中采用后綴匹配的規(guī)則進(jìn)行配置。大家看這段代碼:

      <servlet-name>HelloServlet</servlet-name>
      <url-pattern>*.do</url-pattern>
      </servlet-mapping>

      在這個(gè)配置當(dāng)中,我們限定了訪問這個(gè)Servlet 的后綴名是”.do”。也就是說(shuō),當(dāng)我們的URL 中的服務(wù)器地址,端口號(hào),工程名這些項(xiàng)沒有錯(cuò)誤的情況下,只要url 以”.do”結(jié)尾,就
      能夠訪問到我們的這個(gè)Servlet。比方說(shuō),在訪問我們這個(gè)別名為 HelloServlet 的Servlet的時(shí)候,URL 可以寫為這樣的形式:http://127.0.0.1:8080/ TestServlet/helloServ.do。大家可以看到,在這個(gè)URL 的前半部分是IP 地址、端口號(hào)和項(xiàng)目名稱。并且這個(gè)URL 以.do 結(jié)尾,因此就可以訪問到HelloServlet?;蛘撸覀円部梢园堰@個(gè)URL 寫為這樣的形式,都是可以的:http://127.0.0.1:8080/ TestServlet/theServlet.do。

      6.5、注意事項(xiàng)

      在配置 Servlet 的過(guò)程中,大家需要注意的另外一點(diǎn)就是一個(gè)Servlet 配置元素可以同時(shí)對(duì)應(yīng)多個(gè)Servlet-mapping 元素, 比方說(shuō),我們?nèi)匀灰詣偛潘榻B的HelloServlet 為例,大家看這段代碼:

      復(fù)制代碼
      <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>
      復(fù)制代碼

      在這段代碼中,我們?yōu)閯e名為HelloServlet 的Servlet 配置了3 個(gè)servlet-mapping 元素。既然我們可以為同一個(gè)Servlet 同時(shí)配置多個(gè)servlet-mapping,那么當(dāng)客戶端在訪問這個(gè)servlet 的時(shí)候,servlet 容器是按照一個(gè)什么樣的順序來(lái)查找servlet 的呢?當(dāng)為同一個(gè)Servlet 配置了多個(gè)servlet-mapping 的時(shí)候,servlet 容器首先將按照精確
      匹配的方式進(jìn)行匹配查找,如果匹配完成,則結(jié)束匹配,而如果匹配不成功就按照目錄匹配、后綴匹配的順序繼續(xù)進(jìn)行匹配查找,如果有多個(gè)目錄匹配方式的配置項(xiàng),則按照最長(zhǎng)的一個(gè)來(lái)匹配。同時(shí),在進(jìn)行匹配的時(shí)候同樣要看請(qǐng)求的URL,如果這個(gè)URL 以斜線結(jié)尾,那么這個(gè)請(qǐng)求將會(huì)按照目錄匹配的方式來(lái)進(jìn)行處理

      七、在eclipse中創(chuàng)建Servlet

      選擇需要的方法

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多