Java學習之servlet學習(server applet)

一、概念:運行在服務器端的小程序。

二、* servlet就是一個接口,定義了Java類被瀏覽器訪問到(tomcat識別)的規則。

三、* 將來我們自定義一個類,實現servlet接口,複寫方法。

* 快速入門

            1.創建javaee項目

            2.定義一個類,實現servlet接口

            3.實現接口中的抽象方法。

package cn.itcast.web.servlet;

import javax.servlet.*;
import java.io.IOException;

/**
 * servlet快速入門 
 */
public class ServletDemo1 implements Servlet
{
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    // 提供服務的方法
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello servlet");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

            4.配置servlet。在web.xml中配置。

<!--配置servelt-->
    <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>

  

四、設置虛擬目錄:

 

 

  六、servlet執行原理:

1.當服務器接shou到客戶端瀏覽器的請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑。

2.查找web.xml文件,是否有對應的url-pattern標籤體內容。

3.如果有,則在找到對應的<servlet-class>全類名

4.tomcat會將字節碼文件加載進內存,並且創建其對象

5.調用其方法。

 

 

七.servlet中的生命週期:

1.被創建:執行init方法,只執行一次

       

   * servlet的init方法,只執行一次,說明一個servlet在內存中只存在一個對象,servlet是單例的。

   多個用戶同時訪問,可能存在線程安全問題。

   解決:儘量不要在servlet中定義成員變量,即使定義了成員變量,也不要對修改值

    

2.提供服務:執行service,執行多次

    每次訪問servlet時,service方法都會被調用一次

3.被銷燬:執行destroy方法,只執行一次

    servlet被銷燬時執行,服務器關閉時,servlet被銷燬。

    只有服務器正常關閉時,纔會執行destroy方法。

package com.example.servlet1;

import javax.servlet.*;
import java.io.IOException;

/**
 * Servlet的方法
 */
public class ServletDemo2 implements Servlet {
    /**
     * 初始化方法
     * 在servlet被創建時,執行只會執行一次
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init...");
    }

    /**
     * servlet配置方法
     * @return
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 提供服務的方法
     * 每一次servlet被訪問時就執行,執行多次
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service...");
    }

    /**
     * 獲取servlet的一些信息,版本作者等等
     * @return
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    /**
     * 銷燬方法
     * 在服務器正常關閉時,執行,執行一次。
     */
    @Override
    public void destroy() {
        System.out.println("destroy...");
    }
}

 

 

八. servlet 3.0 

好處:支持註解配置。可以不需要web.xml了。

步驟:

1.創建javaee項目,選擇servlet的版本3.0以上,可以不創建web.xml

2.定義一個類,實現servlet接口

3.複寫方法

4.在類上使用@webServlet註解,進行配置。

 

package com.example.servelt3;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/demo2")
public class ServletDemo implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service...");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

 

九.IDEA與tomcat的相關配置

十、servlet的推薦用法

package com.example.servelt3;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "ServletDemo2", value = "/ServletDemo2")
public class ServletDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet...");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doPost...");
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章