国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Servlet

happen / 2225人閱讀

摘要:一個應用程序中可以有很多,這些都共享同一個對象,我們經常將對象叫域對象。常用的的獲取對象的向對象綁定數據的從對象取出數據的獲取當前應用的初始化參數的獲取資源文件,返回流的獲取資源文件,返回路徑

第一個Servlet開發步驟
 01_創建一個普通Java類,實現Servlet接口
 02_將寫好的Servlet類,還得配置到web.xml文件中去
Demo01.java
編寫一個簡單的Servlet程序輸出英文字符串到瀏覽器【實現Servlet接口】
    public class Demo01 implements Servlet{
    @Override
    public void destroy() {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        OutputStream os = servletResponse.getOutputStream();
        os.write("

Hello Servlet

".getBytes()); os.flush(); os.close(); } }
web.xml


    
        Demo01
    cn.itheima.servlet.Demo01
    
    
        Demo01
        /xxx
    

為什么建議創建Servlet直接繼承HttpServlet類呢
 創建Servlet有三種方式,前二種創建的Servlet能處理任意協議的請求,
 但我們做Web開發,大多都是處理Http協議,所有建議直接繼承HttpServlet類
 再者,HttpServlet類,也繼承與實現了前二種方式的類或接口,且有適合于HTTP協議特點的方法
方式一:編寫一個簡單的Servlet程序輸出英文字符串到瀏覽器【實現Servlet接口】

編寫一個簡單的Servlet程序輸出英文字符串到瀏覽器【實現Servlet接口】

public class Demo01 implements Servlet{
    @Override
    public void destroy() {
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        OutputStream os = servletResponse.getOutputStream();
        os.write("

Hello Servlet

".getBytes()); os.flush(); os.close(); } } Demo01 cn.itheima.servlet.Demo01 Demo01 /Demo01
方式二:編寫一個簡單的Servlet程序輸出中文字符串到瀏覽器【繼承GenericServlet類】

編寫一個簡單的Servlet程序輸出中文字符串到瀏覽器【繼承GenericServlet類】

public class Demo02 extends GenericServlet{
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        servletResponse.setContentType("text/html;charset=UTF-8");
        PrintWriter pw = servletResponse.getWriter();
        pw.write("

你好,Servlet,我們今天見面了

"); pw.flush(); pw.close(); } } Demo02 cn.itheima.servlet.Demo02 Demo02 /Demo02
編寫一個簡單的Servlet程序輸出當前時間到瀏覽器【繼承HttpServlet類】

編寫一個簡單的Servlet程序輸出當前時間到瀏覽器【繼承HttpServlet類】

public class Demo03 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter pw = response.getWriter();
        pw.write("

現在時間為:" + new Date().toLocaleString()+"

"); pw.flush(); pw.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } } Demo03 cn.itheima.servlet.Demo03 Demo03 /Demo03 如果在瀏覽器地址欄輸入URL后回車,這種方式屬于GET請求
什么是Servlet生命周期
 Servlet是運行于Web服務器中的Servlet引擎/容器中,客戶端是不能直接調用Servlet的,必須由Servlet引擎/容器才能調用。因此Servlet在引擎/容器中從創建到銷毀的全過程,稱之為Servlet生命周期
Servlet生命周期分為四個過程,分別是:
     01——構造器(執行一次)
     02——初始化(執行一次)-----------------------------在默認情況下,首次訪問該Servlet時執行
     03——doGet/doPost/service(執行多次)----------------------非首次訪問該Servlet時執行
     04——銷毀(執行一次)
     Servlet是單例的,被多個客戶端線程共享,建議不要用實例變量
Servlet運行過程圖解 ServletConfig對象有什么作用
當Servlet配置了初始化參數后,Servlet引擎/容器在創建Servlet對象時,
會自動將這些初始化參數封裝到ServletConfig對象中,并在調用Servlet的
init(ServletContext)方法時,將ServletConfig對象傳遞給Servlet。
從而程序員可以通過ServletConfig對象就可以得到當前Servlet的初始化參數信息
常用的API

ServletContext的getInitParameterNames():獲取當前Servlet的所有初始化參數
ServletContext的getInitParameter():獲取當前Servlet的一個初始化參數 Demo04.java

public class Demo04 extends HttpServlet {
    private ServletConfig config;
    public Demo04() {
    }
    @Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        /*
        //獲取web.xml文件中的servlet初始化參數
        Enumeration enums = config.getInitParameterNames();
        while(enums.hasMoreElements()){
            String key = enums.nextElement();
            String value = config.getInitParameter(key);
            //在控制臺顯示
            System.out.println(key+"-"+value);
        }
        */
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter pw = response.getWriter();
    Enumeration enums = config.getInitParameterNames();
        while(enums.hasMoreElements()){
            String key = enums.nextElement();
            String value = config.getInitParameter(key);
            //在瀏覽器中顯示
            pw.write(key+"--"+value+"
"); } pw.flush(); pw.close(); } @Override public void destroy() { } }
Servlet創建時間
    在默認情況下,Servlet是客戶端首次訪問時,Servlet引擎/容器才創建并對其初始化,
有時我們希望Servlet創建與初始化的時間能夠提前到Web服務器啟動時,這樣客戶
端首次訪問時,就不用創建與初始化Servlet了,提高了訪問速度,我們可以用自動
加載Servlet來完成任務
    配置的數值越小,越先創建與初始化,只限于0,1,2,3等等,負數與沒有配置效果一樣
如果配置負數,必須用戶首次訪問時才創建與初始化該Servlet
    web.xml

    Demo04
     cn.itheima.servlet.Demo04
    1


    Demo04
    /Demo04

什么是Servlet虛擬路徑
      一個在web.xml文件中,可供外界能訪問Web服務器中Servlet的字符串
即/xxx這個就是Servlet虛擬路徑
   為什么要配置Servlet虛擬路徑
      Servlet位于Servlet引擎/容器中,Servlet引擎/容器又位于Web服務器中,
客戶端是不可能知道Servlet的名字的,但Servlet畢竟要處理客戶端提交的請求,
就必須讓客戶端訪問,那么要訪問Servlet,就必須給客戶端一個有效的訪問路徑,
又不能暴露Servlet真實保存在服務器中的位置,于是就只能配置Servlet虛擬路徑
    如何配置Servlet虛擬路徑
      Servlet虛擬路徑的配置是在web.xml文件中,一個Servlet可以配置在一個或多個虛擬路徑上,
也可以使用*.xx或者是/xx通配符形式來配置Servlet路徑通配符
      不能出現/*.do的情況,只能分成二個url-pattern來書寫
      當一個真正的index.html與一個虛擬路徑為index.html同時存在時,
以虛擬路徑為主

web.xml

    Demo05 cn.itheima.servlet.Demo05
    1


    Demo05
    /Demo05
    /xx
    /yy
    /index.html
    /*
    *.do

什么是缺省Servlet
  如果某個Servlet的映射的虛擬路徑為一個正斜杠(/),那么這個Servlet就成為 當前Web應用程序的默認Servlet

默認Servlet有什么作用 ----專用于處理其它正常Servlet不處理的客戶端請求 Servlet讀取硬盤中的圖片
Tomcat中就有默認Servlet

 在Tomcat/conf/web.xml文件中,注冊了一個名稱為DefaultServlet的Servlet, 并將這個Servlet設置

為了缺省Servlet,像404,500,等頁面,就是由這個DefaultServlet
來響應給客戶端的,當程序員有一個缺省Servlet時,Tomcat又有一個缺省Servlet時, 以程序員為主。
項目中,我們以Tomcat中的缺省Servlet為主,即程序員不用寫缺省Servlet

 Demo06.java
public class Demo06 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //輸入流指向圖片
        InputStream is = this.getClass().getClassLoader().getResourceAsStream("../../images/girl1.jpg");
        //輸出流指向瀏覽器
        OutputStream os = response.getOutputStream();
        //讀取圖片并輸出到瀏覽器
        byte[] buf = new byte[2048];
        int len = 0;
        while((len=is.read(buf))>0){
            os.write(buf,0,len);
        }
        //關閉流
        os.close();
        is.close();
    }
}

    Demo06
    cn.itheima.servlet.Demo06


    Demo06
    /

關于路徑問題:
/webapps
        /day11
             /images/girl_1.jpg
                  /WEB-INF/classes/Demo06.class
                                /lib
                                /web.xml       
 
 
ServletContext對象 ServletContext對象有什么作用

Tomcat啟動時,會為每個部署在Tomcat中的Web應用程序都創建一個對應的ServletContext對象,
它代表當前Web應用。即一個Web應用程序對應著一個ServletContext對象。
一個Web應用程序中可以有很多Servlet,這些Servlet都共享同一個ServletContext對象,我們經常
將ServletContext對象叫域對象。

常用的API
 ServletConfig的getServletContext():獲取ServletContext對象
    ServletContext的setAttribute():向ServletContext對象綁定數據
    ServletContext的getAttribute():從ServletContext對象取出數據
    ServletContext的getInitParameter():獲取當前Web應用的初始化參數
    ServletContext的getResourceAsStream():獲取資源文件,返回流
    ServletContext的getRealPath():獲取資源文件,返回路徑
    
Demo07.java
public class Demo07 extends HttpServlet {
     public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
         System.out.println("Demo07::doGet()");
 
         //InputStream is = this.getServletContext().getResourceAsStream("/images/girl_2.png");
         String filePath = this.getServletContext().getRealPath("/images/girl_3.png");
         System.out.println(filePath);
         InputStream is = new FileInputStream(filePath);
         OutputStream os = response.getOutputStream();
         byte[] buf = new byte[1024*2];
         int len = 0;
         while((len=is.read(buf))>0){
              os.write(buf,0,len);
         }
         os.close();
         is.close();
     }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70007.html

相關文章

  • 淺談Servlet

    摘要:信息錄入輸入內容提交同樣,我們也需要在下添加一條路由映射規則這樣我們在中輸入信息后就會跳轉到,這樣就可以通過對象獲取到變量的值。 Servlet(服務端小程序)是使用Java語言編寫的服務端小程序,可以用于生成動態的Web頁面。 Servlet處理的基本流程 showImg(/img/bVk1Jd); 客戶端通過HTTP提出請求。 Web服務器接受該請求并將其發送給Servle...

    wayneli 評論0 收藏0
  • servlet詳解

    摘要:初始化的錯誤處理在初始化期間,實例可能通過拋出或者異常表明它不能進行有效服務。每一個請求由類型的對象代表,而使用回應該請求。在請求的情況下,容器必須提供代表請求和回應的和的具體實現。表明不能對請求進行處理,可能是暫時的,也可能是永久的。 servlet詳解 Servlet有良好的生存期的定義,包括如何加載、實例化、初始化、處理客戶端請求以及如何被移除。這個生存期由javax.Serv...

    elva 評論0 收藏0
  • servlet容器

    摘要:,容器的作用是負責處理客戶請求,當客戶請求來到時,容器獲取請求,然后調用某個,并把的執行結果返回給客戶。將請求發送給服務器端是的容器。將該請求轉換成一個消息,并將其放入一個隊列。繼承自類,其在中扮演的角色是中心控制器。 容器就是你的程序運行時需要的環境 1,Tomcat是Servlet的運行環境,即一個Servlet容器。 2,Servlet容器的作用是負責處理客戶請求,當客戶請求來到...

    dcr309duan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<