Servlet

一、Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

 Servlet继承体系:Servlet(接口)---> GenericServlet(抽象类) ---> HttpServlet(抽象类)

二、Servlet接口:

package javax.servlet;

import java.io.IOException;

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}

Servlet中的生命周期方法:

1. 被创建:执行init方法,只执行一次
         Servlet什么时候被创建?
                 默认情况下,第一次被访问时,Servlet被创建。
            Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
            多个用户同时访问时,可能存在线程安全问题。
            解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值

2. 提供服务:执行service方法,执行多次
         每次访问Servlet时,Service方法都会被调用一次。 

3. 被销毁:执行destroy方法,只执行一次
         Servlet被销毁时执行。服务器关闭时,Servlet被销毁
         只有服务器正常关闭时,才会执行destroy方法。
         destroy方法在Servlet被销毁之前执行,一般用于释放资源 

三、GenericServlet抽象类:

        实现了Servlet, ServletConfig, Serializable多个接口,将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象方法。将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可。

四、HttpServlet抽象类: 

        继承了GeneriServlet类,对HTTP协议进行了简单的封装。

        HttpServlet的响应流程:web端向Servlet发出http请求 --> Servlet容器解析请求,并将请求信息封装到HttpRequest对象里,同时创建HttpResponse对象 --> Servlet容器将两个对象作为参数调用HttpServlet的service方法 --> service方法通过web端请求数据的方式调用相对应的doXxx()方法。

        HttpServlet的使用方法:

                只需要继承HttpServlet重写对应的doXxx()方法。(通常只用到了doPost()与doGet方法)

@WebServlet("/servletDemo")    //配置虚拟路径
public class ServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet...");
        System.out.println(req);
    }

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

 

 五、虚拟路径的配置

         urlpartten:Servlet访问路径(注释法)
         一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})
         路径定义规则:
            1. /xxx:路径匹配
            2. /xxx/xxx:多层路径,目录结构
            3. *.do:扩展名匹配

上一篇:解决mui错误:Unable to preventDefault inside passive event listener due to target being treated as passiv


下一篇:编写一个Servlet程序,可显示该Servlet被访问的次数。