• 2021-08-29-Servlet和注解开发



    layout: post
    #标题配置
    title: Servlet以及其注解开发
    #时间配置
    date: 2021-08-29 19:48:00 +0800
    #目录配置
    categories: Web
    #标签配置
    tag: 学习笔记

    • content
      {:toc}

    Servlet

    一.Servlet的介绍

    • Servlet是运行在Java服务器端的程序,用于接收和响应来自客户端基于HTTP协议的请求.
    • 如果想实现Servlet的功能,可以通过实现javax.servlet.Servlet接口或者继承它的实现类.
    • 核心方法: service0,任何客户端的请求都会经过该方法。

    二.Servlet实现方式

    1. 第一种
    • ·实现Servlet接口,实现所有的抽象方法。该方式支持最大程度的自定义。
    1. 第二种
    • 继承GenericServlet抽象类,必须重写service方法,其他方法可选择重写。该方式让我们开发Servlet变得简单。但是这种方式和HTTP协议无关。
    1. 第三种
    • 继承HttpServlet抽象类,需要重写doGet和doPost方法。该方式表示请求和响应都需要和HTTP协议相关。

    三.Servlet映射方式

    1. 第一种
    • 具体名称的方式。访问的资源路径必须和映射配置完全相同。
    1. 第二种
    • /开头+通配符的方式。只要符合目录结构即可,不用考虑结尾是什么。
    1. 第三种
    • 通配符+固定格式结尾的方式。只要符合固定结尾格式即可,不用考虑前面的路径。
      注意∶优先级问题。越是具体的优先级越高,越是模糊通用的优先级越低。第一种->第二种->第三种。

    四.servlet多路径映射

    • 我们可以给一个Servlet配置多个访问映射,从而根据不同的请求路径来实现不同的功能
      用三.2方法实现

    五.Servlet创建时机

    1. 第一次访问时创建
    • 优势:减少对服务器内存的浪费。提高了服务器启动的效率。
    • 弊端:如果有一些要在应用加载时就做的初始化操作,无法完成。
    1. 服务器加载时创建
    • 优势:提前创建好对象,探高了首次执行的效率。可以完成一些应用加载时要做的初始化操作.

    • 弊端:对服务器内存占用较多,影响了服务器启动的效率,

    • 修改Servlet创建时机。在标签中,添加标签(标签里面只能写数字)
      正整数代表服务器加载时创建,值越小、优先级越高。负整数或不写代表第一次访问时创建

    五.默认Servlet

    • 默认Servlet是由服务器提供的一个Servlet。它配置在Tomcat的conf目录中的web.xml中.
    • 它的映射路径是/,我们在发送请求时,首先会在我们项目中的web.xml 中查找映射配置,找到则执行。但是当找不到对应的Servlet路径时,就去找默认的Servlet,由默认Servlet处理。所以,一切都是Servlet.

    ServletConfig介绍

    • ServletConfig是Servlet的配置参数对象,在Servlet的规范中,允许为每一个Servlet都提供一些初始化的配置。所以,每个Servlet都有一个自己的ServletConfig.
    • 作用:在Servlet 的初始化时,把一些配置信息传递给Servlet。
    • 生命周期:和Servlet相同

    一.ServletConfig配置方式

    • 在标签中,通过标签来配置。有两个子标签。
    • :代表初始化参数的key.
    • :代表初始化参数的value,
      要给一个servlet配置多个,需要写多个,一个标签里面只能有一个键值对
      ##二.ServletConfig常用方法
    返回值方法名说明
    StringgetlnitParameter(Stringname)根据参数名称获取参数的值
    EnumerationgetInitParameterNames0获取所有参数名称的枚举
    StringgetServletName0获取Servlet的名称
    ServletContextgetServletContext(获取ServletContext对象

    ServletContext介绍

    • ServletContext是应用上下文对象(应用域对象)。每一个应用中只有一个ServletContext对象.
    • 作用:可以配置和获得应用的全局初始化参数,可以实现Servlet之间的数据共享.
    • 生命周期:应用一加载则创建,应用被停止则销毁

    一.域对象

    • 域对象指的是对象有作用域。也就是有作用范围。域对象可以实现数据的共享。不同作用范围的域对象,共享数据的能力也不一样。
    • 在Servlet规范中,一共有4个域对象。ServletContext就是其中的一个。它也是web应用中最大的作用域,也叫application域。它可以实现整个应用之间的数据共享!

    二.ServletContext配置方式

    • 在标签中,通过标签来配置。有两个子标签。
    • :代表全局初始化参数的key.
    • :代表全局初始化参数的value

    三.ServletContext常用方法

    返回值方法名说明
    StringgetlnitParameter(String name)根据名称获取全局配置的参数
    StringgetContextPath0获取当前应用的访问虚拟目录
    StringgetRealPath(String path)根据虚拟目录获取应用部署的磁盘绝对路径
    返回值方法名说明
    voidsetAttribute(String name,Object value)向应用域对象中存储数据
    ObjectgetAttribute(String name)通过名称获取应用域对象中的数据
    voidremoveAttribute(String name)通过名称移除应用域对象中的数据

    注解开发Servlet

    一.自动注解开发的注解详解

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface WebServlet {
    	//指定Servlet的名称。等效于web.xml文件标签下的
        String name() default "";
    	//用于映射Servlet。等效于
        String[] value() default {};
        String[] urlPatterns() default {};
    	//指定Servlet的加载时机。等效于
        int loadOnStartup() default -1;
    	//指定Servlet的初始化参数。等效于
        WebInitParam[] initParams() default {};
    	//指定Servlet是否支持异步
        boolean asyncSupported() default false;
    	//指定Servlet的小图标
        String smallIcon() default "";
    	//指定Servlet的大图标
        String largeIcon() default "";
    	//指定Servlet的描述信息
        String description() default "";
    	//指定Servlet的显示名称
        String displayName() default "";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    二.手动创建容器的介绍

    • Servlet 3.0规范除了使用自动注解的配置方式外,还支持手动创建Servlet容器的方式。如果使用须遵循其编写规范。在3.0版本加入了一个新的接口∶ServletContainerInitializer
  • 相关阅读:
    Skywalking的知识
    【HarmonyOS】元服务服务卡片网络开发
    go 并发
    2024年需要的变化
    微信小程序demo 调用支付jsapi缺少参数 total_fee,支付签名验证失败 究极解决方案
    最全自学黑客技术学习路线~这也泰酷辣
    springboot thymeleaf使用
    linux0.11-内核信号
    01【MyBatis-快速入门】
    聚观早报 | 特斯拉发布赛博啤酒套装;小米汽车售价曝光
  • 原文地址:https://blog.csdn.net/m0_53743471/article/details/126328099