• Javaweb之Servlet介绍


    Servlet

    域对象

    修改配置文件(web.xml)后需要重启

    servlet介绍:

    (151条消息) JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)_刘扬俊的博客-CSDN博客_servlet

    配置servlet:

    (151条消息) web.xml中servlet配置及其含义_丑八怪28的博客-CSDN博客_web.xml中servlet配置及其含义

    一、Servlet的生命周期

     init( ),service( ),destroy( )是Servlet生命周期的方法。

    1.init( ), 当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来,但是这个方法在后续请求中不会在被Servlet容器调用,就像人只能“出生”一次一样。我们可以利用init( )方法来执行相应的初始化工作。调用这个方法时,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。

    2.service( )方法,每当请求Servlet时,Servlet容器就会调用这个方法。就像人一样,需要不停的接受老板的指令并且“工作”。第一次请求时,Servlet容器会先调用init( )方法初始化一个Servlet对象出来,然后会调用它的service( )方法进行工作,若在后续有多次请求,Servlet容器会不停调用service方法。

    3.destory, 当要销毁Servlet时,Servlet容器就会调用这个方法,就如人一样,到时期了就得死亡。在卸载应用程序或者关闭Servlet容器时,就会发生这种情况,一般在这个方法中会写一些清除代码。
     


    下面使用一个程序进行对servlet生命周期的验证,其中需要进行servlet类的定义和对应xml文件中的配置,在service方法中设置一个计数器i,从而进行对servlet服务调用的计数工作。

     1. servlet类的定义

    1. package com.edu;
    2. import java.io.IOException;
    3. import javax.servlet.Servlet;
    4. import javax.servlet.ServletConfig;
    5. import javax.servlet.ServletException;
    6. import javax.servlet.ServletRequest;
    7. import javax.servlet.ServletResponse;
    8. public class Servlet03 implements Servlet{
    9. int i=1;
    10. @Override
    11. public void destroy() {
    12. // TODO Auto-generated method stub
    13. System.out.println("Servlet03 is being destroyed.");
    14. }
    15. @Override
    16. public ServletConfig getServletConfig() {
    17. // TODO Auto-generated method stub
    18. return null;
    19. }
    20. @Override
    21. public String getServletInfo() {
    22. // TODO Auto-generated method stub
    23. return null;
    24. }
    25. @Override
    26. public void init(ServletConfig config) throws ServletException {
    27. // TODO Auto-generated method stub
    28. System.out.println("Servlet03 is inited.");
    29. }
    30. @Override
    31. public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    32. // TODO Auto-generated method stub
    33. System.out.println("Servlet03 is serving at."+ (i++) +"times");
    34. }
    35. }

    2. 对应的web.xml配置

    在配置Servlet时,需要配置以下两点:

    • ,配置Servlet
    • ,配置其映射信息

    (1)

    可以随意指定,但要有一定的意义,一般取为类的名称,我的类名为Servlet03,这里取名为Servlet03

    是类的全路径,package+calssname,一般是包名+类名,因为我的servlet类所在的包名是com.edu,所以是com.edu.Servlet03,一定要是全路径


    (2):映射信息

    里面的名字是对应的Servlet名,即上面配置的Servlet名字Servlet03。

    是映射路径,也就是访问Servlet的名称,是在访问Servlet在浏览器地址栏后面输入的信息,例如我的映射路径命名为/Servlet03,在地址栏中输入http://localhost/myweb01/Servlet03

    注意:这里的映射路径一定要写成/servlet,不能是servlet,一定要带斜杠 / 表明映射的地址!

    1. "1.0" encoding="UTF-8"?>
    2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    3. <display-name>myweb01display-name>
    4. <welcome-file-list>
    5. <welcome-file>index.htmlwelcome-file>
    6. <welcome-file>index.htmwelcome-file>
    7. <welcome-file>index.jspwelcome-file>
    8. <welcome-file>default.htmlwelcome-file>
    9. <welcome-file>default.htmwelcome-file>
    10. <welcome-file>default.jspwelcome-file>
    11. welcome-file-list>
    12. <servlet>
    13. <servlet-name>Servlet03servlet-name>
    14. <servlet-class>com.edu.Servlet03servlet-class>
    15. servlet>
    16. <servlet-mapping>
    17. <servlet-name>Servlet03servlet-name>
    18. <url-pattern>/Servlet03url-pattern>
    19. servlet-mapping>
    20. web-app>

     配置结束后启动servlet,可以发现控制台中servlet被初始化了,多刷新几次后可以发现servlet不断的在进行服务。

    在servers窗口手动关闭Tomcat服务器后,可以发现调用了destroy方法,servlet被销毁。至此一个生命周期结束。

    servlet有两种创建方式,一种是创建dynamic web project时版本号选2.5,此时需要在web.xml文件中进行配置,其次,在创建项目时选择4.0的版本号,则可以通过注解直接引入servlet,而无需再进入配置文件中进行配置。

  • 相关阅读:
    大结果集SQL引发的ClickHouse空闲超时
    pycharm统计代码运行时间
    前端开发工具有哪些?17款前端工程师必备工具推荐!
    SCI中讨论的注意事项
    联想电脑去掉开机广告 关闭开机广告 ideapad 去掉开机广告
    《FFmpeg Basics》中文版-06-填充视频
    【Sklearn学习】Sklearn的数据集介绍
    Python开发技术—文件和异常2
    代码随想录算法训练营第三天|LeetCode 203.移除链表元素 、707.设计链表 、206.反转链表
    PHP调用电商API接口的方法及实现
  • 原文地址:https://blog.csdn.net/weixin_45662399/article/details/126536663