JavaWeb05-Servlet

概念

Servet = Server applet 运行在服务器的小程序
Servlet就是一个接口,定义了Java类被浏览器访问到的规则。

JavaWeb05-Servlet
将来定义一个类,实现Servlet接口,复写方法即可。

快速入门

步骤:
1.创建JavaEE项目
2.定义一个类,实现Servlet接口
3.实现接口中的抽象方法
4.配置Servlet
示例:
(0)创建一个Web项目,虚拟路径指定为/Servlet
(1)继承Servlet接口:

package com.yatolove;

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

public class ServerletDemo01 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 {

    }

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

    @Override
    public void destroy() {

    }
}

(2)配置Servlet 访问路径
在web.xml中的根标签内部配置:

    <servlet>
        <servlet-name>demo01</servlet-name>
        <servlet-class>com.example._01_servlet.ServletDemo01</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo01</servlet-name>
        <url-pattern>/demo01</url-pattern>
    </servlet-mapping>

(3)启动Tomcat,并通过浏览器访问
http://localhost:8080/Servlet/demo01
demo01就是配置中的url-pattern

Servlet执行原理

浏览器通过: ip:port/项目虚拟路径/Servlet资源名称 找到此Servlet
先找到web项目,然后找web.xml,然后找Servlet的url-pattern,然后根据映射关系找到Servlet类
JavaWeb05-Servlet

Servlet生命周期

JavaWeb05-Servlet

Servlet生命周期分为三个阶段:

1,初始化阶段 调用init()方法

2,响应客户请求阶段  调用service()方法

3,终止阶段  调用destroy()方法

  • init()方法在Servlet类被加载的时候执行,且仅执行一次
    Servlet类加载时机根据web.xml中的配置决定:
    load-on-startup<0 第一次请求此Servlet的时候加载Servlet类;
    load-on-startup>=0 启动Tomcat容器的时候加载Servlet类
    <servlet>
        <servlet-name>demo01</servlet-name>
        <servlet-class>com.example._01_servlet.ServletDemo01</servlet-class> 
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo01</servlet-name>
        <url-pattern>/demo01</url-pattern>
    </servlet-mapping>

1.Serverlet的int只执行一次,说明只有一个Servlet对象,Servlet对象是单例的;
2.多个用户同时访问同一个Servlet的时候,可能存在线程安全问题
尽量不要在Servlet中定义成员变量,定义了成员变量,也不要对其进行set操作。

  • service() 每接收一次请求,调用一次

  • destroy()在Servlet销毁的时候执行,且仅执行一次
    服务器正常关闭的时候才会销毁Servlet

Servlet 注解配置

注解配置,就不用在web.xml中配置了,在创建web项目的时候可以不创建web.xml
Servlet必须在3.0及以上版本才可以。
配置方式:
1. @WebServlet(urlPattern="/demo01")
2. @WebServlet(value="/demo01")
注解类型中,如果只有一个属性的话,可以省去value
3. @WebServlet("/demo01")

Servlet体系结构

Servlet接口
|
GenericServlet抽象类
|
HttpServlet 抽象类

1.GenericServlet 继承 只需要复写Service;对Serverlet接口的其他方法做了默认实现


public class ServletDemo02 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        
    }
}

2.HttpServlet抽象类
对http协议封装了,只需要复写doGet/doPost方法即可

Servlet url配置

1.@WebServlet可以指定多个访问路径
@WebServlet{"/d4","/dd4","/ddd4"}
2.路径定义规则:
1./xxx
2./xxx/xx 多层路径
3.*.do

上一篇:static代码块以及抽象类介绍


下一篇:回顾方法及加深