簡單介紹Java Servlet程式

2022-07-19 14:01:26
本篇文章給大家帶來了關於的相關知識,其中主要整理了Servlet的相關問題,Servlet執行在伺服器端(tomcat)的java程式。是sun公司的一套規範,就是動態資源,用來接收使用者端的請求,處理請求,響應給瀏覽器的動態資源,下面一起來看一下,希望對大家有幫助。

推薦學習:《》

Servlet執行在伺服器端(tomcat)的java程式。是sun公司的一套規範,就是動態資源。

Servlet作用

用來接收使用者端的請求,處理請求,響應給瀏覽器的動態資源。

但Servlet本質就是java程式碼,通過java的API動態的向用戶端傳輸資料內容。

Servlet與普通的java程式的區別

1,必須實現Servlet介面

2,必須在servlet容器(tomcat伺服器)中執行

3,servlet程式可以接收使用者請求的引數以及向瀏覽器輸出資料。

Servlet介面並不是JDK中的介面,所以我們需要匯入jar包。javaweb專案是在WEB-INF/lib目錄中存放jar包。tomcat是一個庫,裡面有Servlet的jar包,所以我們可以不用在lib目錄中匯入了。通過maven也可以依賴。

怎麼通過瀏覽器存取Servlet呢?

可以通過設定web.xml對映路徑,使用場景:不是自己寫的Servlet,或者jar包中的Servlet,你沒法在別人寫的程式碼上加註解,所以就得使用設定web.xml對映路徑的方式去使用別人寫的servlet.

  <servlet>
         <!--自定義,一般為類名-->
         <servlet-name>servletDemo1</servlet-name>
         <!--一定是package + .類名-->
         <servlet-class>day08_servlet.ServletDemo1</servlet-class>
     </servlet>
     <!--給Servlet提供(對映)一個可供使用者端存取的URI-->
     <servlet-mapping>
         <!--和servlet中的name必須相同-->
         <servlet-name>servletDemo1</servlet-name>
         <!-- servlet的對映路徑 -->
         <!-- 全路徑匹配/servlet 或者/*萬用字元匹配 或者擴充套件名匹配*.do-->
         <url-pattern>/servlet</url-pattern>
     </servlet-mapping>

第二種方式@WebServlet註解。自己寫的Servlet通過註解@WebServlet方式比較方便

@WebServlet(name = "helloServlet", value = "/hello-servlet")

Servlet生命週期:

1,預設是第一次有請求存取這個servlet的時候建立,建立出來之後會將這個Servlet的物件儲存到tomcat容器當中。

2,當服務關閉時,Servlet物件才會銷燬

Servlet生命週期方法:

1,init()會在Servlet初始化出來的時候使用,會呼叫一次

能否設定Servlet在伺服器啟動的時候就建立呢?

可以在web.xml中設定,例如DefaultServlet(靜態資源存取)就是在tomcat的組態檔中設定好了

如果不用組態檔設定可以使用@WebServlet註解中的loadOnStarup設定。

2,service()會在Servlet接收到請求時候呼叫

3,destroy()會在servlet物件被銷燬之前呼叫

ServletConfig物件的介紹;用於獲取servlet設定時候的初始化引數的


idea新建一個Servlet快捷方式

HttpServletRequest

請求轉發:只能轉發到專案類的路徑,並且瀏覽器端url不跳轉,原理是伺服器請求轉發

request.getRequestDispatcher("/test.jsp").forward(request, response);

如果一個資源在WEB-INF目錄下,只能使用請求轉發才能存取到

request作為域物件,可以在不同的Servlet之間進行資料共用,但是它只能在同一次請求中進行資料共用。

HttpServletResponse

HttpServletResponse詳解_平庸的俗人的部落格-CSDN部落格_httpservletresponse

向用戶端寫資料

        //用字元流向瀏覽器輸出文字
        PrintWriter writer = response.getWriter();
        //write()方法只能輸出字串,如果輸入int,float等型別,則會有問題
        writer.write("嘻嘻");
        //println方法可以輸出純數位,字串
        writer.println(88);

        //1.獲取位元組輸出流
        ServletOutputStream sos = response.getOutputStream();
        //2.輸出資料
        sos.write("hello你好".getBytes("utf-8"));

ServletContext作用

作為域物件存取資料,讓Servlet共用,所有的請求都可以進行資料共用

ServletContext servletContext = getServletContext();
servletContext.setAttribute("username","zhangsan");
servletContext.getAttribute("username");

獲得檔案的MIME型別(檔案下載)

ServletContext servletContext = getServletContext();
servletContext.getMimeType("檔名");

獲得全域性初始化引數

獲得web資源路徑,可以將web資源轉換為位元組輸入流

@WebServlet(name = "Test2Servlet", value = "/Test2Servlet")
public class Test2Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /**
         * 把檔案轉成流的幾種方式
         */
        //方式一
        FileInputStream fileInputStream = new FileInputStream("E:\\java重新學習\\demo\\src\\main\\webapp\\2222.jpg");

        //方式二,使用類載入器將檔案轉換成流
        //只能讀取到resources目錄下面的檔案,
        //resources是類路徑,編譯後的路徑classes。
        //Test2Servlet.class.getClassLoader()類載入器預設能找到類路徑(classes)
        //如果你要找webapp下路徑的檔案得../../
        InputStream resourceAsStream = Test2Servlet.class.getClassLoader().getResourceAsStream("2222.jpg");

        //使用ServletContext可以獲取webapp裡面資源的真實路徑
        ServletContext servletContext = getServletContext();
        String realPath = servletContext.getRealPath("2222.jpg");
        //然後通過真實路徑
        FileInputStream fileInputStream1 = new FileInputStream(realPath);
        //或者servletContext是webapp路徑
        InputStream resourceAsStream1 = servletContext.getResourceAsStream("2222.jpg");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}

在web專案中,將檔案轉換成流,通常使用這兩種方式:

1,如果檔案在resources中,就使用類載入器

2,如果檔案在webapp目錄下,就使用ServletContext

ServletContext介紹及用法_白襯衫丶的部落格-CSDN部落格_servletcontext

推薦學習:《》

以上就是簡單介紹Java Servlet程式的詳細內容,更多請關注TW511.COM其它相關文章!