当前位置 : 主页 > 编程语言 > java >

Java Web的基础--Servlet

来源:互联网 收集:自由互联 发布时间:2022-09-02
文章目录 ​​1、Servlet的概念​​ ​​2、Servlet的快速入门​​ ​​3、Servlet的执行原理​​ ​​4、Servlet的生命周期​​ ​​4.1 指定Servlet的创建时机​​ ​​4.2 Destroy方法​​ 1、


文章目录

  • ​​1、Servlet的概念​​
  • ​​2、Servlet的快速入门​​
  • ​​3、Servlet的执行原理​​
  • ​​4、Servlet的生命周期​​
  • ​​4.1 指定Servlet的创建时机​​
  • ​​4.2 Destroy方法​​

1、Servlet的概念

  • Servlet是Server和Applet的这两个单词的组合,即运行在服务器上的小程序。
  • Servlet就是一个接口,定义了Java类被浏览器访问到的规则。
  • Java程序员自定义一个类,实现Servlet接口并重写接口中的方法,Web服务器(如Tomcat等)就可以识别并执行这个程序。

2、Servlet的快速入门

  • 创建JavaEE项目
  • Java Web的基础--Servlet_ide


  • Java Web的基础--Servlet_xml_02

  • 定义一个类,实现Servlet接口,实现接口中的方法
/**
* 定义一个实现Servlet接口的类
*
* @author zhuhuix
* @date 2020-08-23
*/
public class ServletDemo implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {

}

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

// Demo服务
@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() {

}
}
  • 在web.xml配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">

<!-- 配置Servlet -->
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>demo.servlet.ServletDemo</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
  • 运行
  • Java Web的基础--Servlet_java_03

  • 访问http://localhost:8080/servlet_war_exploded/demo路径
  • Java Web的基础--Servlet_java_04

3、Servlet的执行原理

  • 当服务器接受到客户端浏览器的请求后,会解析请求的URL路径,获取访问的Servlet的资源路径
  • 查找web.xml,是否有对应的url-pattern标签体内容
  • 如果存在以上标签体内容,则找到其对应的servlet-class标签体中标注的类名
  • 接着由web服务器根据全类名对应的的字节码文件加载进内存,并且创建对应的对象
  • 最后调用该对象的相应方法
  • 4、Servlet的生命周期

    • 例子
    // 初始化方法
    // 在Servlet被创建时执行,只会执行一次
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("init...");
    }

    // 获取Servlet配置
    @Override
    public ServletConfig getServletConfig() {
    return null;
    }

    // 提供服务的方法
    // 每一次Servlet被访问时执行,执行多次
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    System.out.println("service...");
    }

    // 获取Servlet的一些信息
    @Override
    public String getServletInfo() {
    return null;
    }

    // 销毁方法
    // 在web服务器正常关闭时执行,只执行一次
    @Override
    public void destroy() {
    System.out.println("destroy...");
    }

    Java Web的基础--Servlet_java_05

    • 生命周期图
    • Java Web的基础--Servlet_java_06

    4.1 指定Servlet的创建时机

    • 在服务器启动时就创建
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- 配置Servlet -->
    <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>demo.servlet.ServletDemo</servlet-class>

    <!-- 指定Servlet的创建时机
    1.在服务器启动时就创建,load-on-startup配置为0或正值
    -->
    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
    </servlet-mapping>
    </web-app>

    Java Web的基础--Servlet_java_07

    • 第一次被访问时才创建
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- 配置Servlet -->
    <servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>demo.servlet.ServletDemo</servlet-class>

    <!-- 指定Servlet的创建时机
    2.第一次被访问时创建,load-on-startup配置为负值
    -->
    <load-on-startup>-1</load-on-startup>

    </servlet>

    <servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/demo</url-pattern>
    </servlet-mapping>
    </web-app>

    Java Web的基础--Servlet_java_08

    • 注意点: Servlet的init方法中尽量不要定义成员变量。

    4.2 Destroy方法

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


    【文章原创作者:阿里云代理 http://www.558idc.com/aliyun.html处的文章,转载请说明出处】
    网友评论