javaweb開發之servlet初始

servlet概述

  1. Servlet是sun公司提供的一門用於開發動態web資源的技術。
  2. Sun公司在其API中提供了一個servlet接口,用戶若想用發一個動態web資源(即開發一個Java程序向瀏覽器輸出數據),須要完成如下2個步驟:html

    (1)編寫一個Java類,實現servlet接口。
    (2)把開發好的Java類部署到web服務器中。
    (3)按照一種約定俗成的稱呼習慣,一般咱們也把實現了servlet接口的java程序,稱之爲Servlet
  3. servlet運行過程:java

    (1)Servlet程序是由WEB服務器調用,web服務器收到客戶端的Servlet訪問請求後:
          ①Web服務器首先檢查是否已經裝載並建立了該Servlet的實例對象。若是是,則直接執行第④步,不然,執行第②步。
          ②裝載並建立該Servlet的一個實例對象。
          ③調用Servlet實例對象的init()方法。
          ④建立一個用於封裝HTTP請求消息的HttpServletRequest對象和一個表明HTTP響應消息的HttpServletResponse對象,而後調用Servlet的service()方法並將請求和響應對象做爲參數傳遞進去。
          ⑤WEB應用程序被中止或從新啓動以前,Servlet引擎將卸載Servlet,並在卸載以前調用Servlet的destroy()方法。

IDEA建立第一個servlet程序

  1. 選中本身的project,打開Project Structure界面》》選中Libraries》》點擊"+"並選擇java》》選擇並選中本身的tomcat/lib/servlet-api.jar》》Apply》》OK
    圖片描述
  2. 經過idea建立servlet,選中項目的src目錄,右鍵選擇new
    圖片描述
  3. 建立一個servlet,命名爲testServlet
  4. 建立成功後testServlet.java文件中有一行關鍵的代碼:web

    @WebServlet(name = "TestServlet")
    備註:能夠加上具體的urlPattern參數來定義servlet的具體的請求的URL,以下
       @WebServlet(name = "TestServlet",urlPatterns = "/test")
  5. 示例代碼:

    clipboard.png

示例代碼分享:

  1. 關於servlet之http請求的request與response對象:api

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Enumeration;
    import java.util.Arrays;
    
    @WebServlet(name = "testServlet",urlPatterns = "/test")
    public class testServlet extends HttpServlet {
       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
       }
    
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           //請求頭,請求行,請求體
           System.out.println("請求行:");
           System.out.println("url:"+request.getRequestURL());
           System.out.println("uri"+request.getRequestURI());
           System.out.println("methord:"+request.getMethod());
           System.out.println("querystring:"+request.getQueryString());
           System.out.println("addr:"+request.getRemoteAddr());
           System.out.println("host:"+request.getRemoteHost());
           System.out.println("--------------------");
           System.out.println("請求頭:");
           Enumeration<String> headerNames = request.getHeaderNames();
           while(headerNames.hasMoreElements()){
               String key = headerNames.nextElement();
               String value = request.getHeader(key);
               System.out.println(key+"="+value);
           }
           System.out.println("--------------------");
           System.out.println("請求體:");
           Enumeration<String> params = request.getParameterNames();
           while (params.hasMoreElements()){
               String key = params.nextElement();
               //接收的參數中通常有中文,注意編碼
               String value = request.getParameter(key);
               value = new String(value.getBytes("iso-8859-1"),"UTF-8");
               System.out.println(key+"="+value);
           }
           System.out.println("--------------------");
           //開始response
           //1.二進制流方式輸出
           response.setContentType("text/html;charset=UTF-8");//必定要作編碼的設置,不然瀏覽器可能輸出亂碼
           //response.getOutputStream().write("中國".getBytes("UTF-8"));
           //2.字符流方式輸出
           response.getWriter().write("字符流");
       }
    
    
    }
相關文章
相關標籤/搜索