tomcat如何查找请求资源的?

用户的请求过来,comcat 会根据虚拟目录先到 webapps 目录查找项目,如果找到了则进入到项目下的 WEB-INF 目录下查找 web.xml 文件,查找到则解析该文件,根据资源路径查找请求资源,如果找到了资源则正常实例化和调用有关的方法,如果找不到则返回 404。

如果找不到 web.xml 文件呢?使用 @WebServlet 注解来映射 url-pattern,是没有 web.xml 文件的。此时服务器又是如何查找请求资源的呢?

注解本质是接口,@WebServlet("/demo01") 这样的注解,要起作用,tomcat 肯定会自动实现接口 WebServelt,然后对实现类实例化,再调用实例对象的 urlPatterns() 方法,该方法返回值是一个字符串数组,而数组里面只有一个元素,就是字符串 /demo01,难道 tomcat 要创建多个 WebServlet 对象,然后再分别调用对象的 urlPatterns() 方法,取出字符串数组里面的元素值,将其和用户的请求资源路径进行相等比较,如果相等则实例化该注解所标注的 Servlet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java使用迭代器删除元素_使用Java从地图中删除元素

java使用迭代器删除元素关于从Java中的Map删除元素的非常简短的文章。 我们将专注于删除多个元素&#xff0c;而忽略了您可以使用Map.remove删除单个元素的Map.remove 。 以下Map将用于此帖子&#xff1a; Map<Integer, String> map new HashMap<>(); map.put(1…

IntelliJ IDEA普通的Java项目如何转成Maven Web项目

文章目录一、把项目改成 Java Web 项目二、把 Java Web 项目改成 Maven 项目三、调整目录结构四、部署项目五、参考一、把项目改成 Java Web 项目 注&#xff1a;只有 Web 项目才能创建 Artifact。 二、把 Java Web 项目改成 Maven 项目 得到的目录结构如下图所示&#xff1a;…

php全选按钮怎么写,PHP中的“全选”复选框,其中包含header.php

我必须在我的代码中包含一个header.php&#xff0c;那是问题的方面。当我不包括它&#xff0c;代码工作正常。但是&#xff0c;当我包含它代码不起作用&#xff0c;意味着检查所有按钮不会选中所有复选框。我的代码 -checkall.phpfunction toggle(source) {checkboxes documen…

bom .dom_MicroProfile 2.2 BOM导入支持

bom .domMicroProfile 2.2刚刚发布&#xff0c;其中包含对Fault Tolerance&#xff0c;Open Tracing&#xff0c;Open API和Rest Client API的更新。 自2.2版以来&#xff0c;还支持使用BOM&#xff08;物料清单&#xff09;依赖项导入。 通过这种方法&#xff0c;我们可以在d…

java: 错误: 不支持发行版本 5

文章目录一、在 pom.xml 文件中加入 properties 标签二、在 maven 的配置文件设置默认的 JDK 版本三、IDE 配置参考一、在 pom.xml 文件中加入 properties 标签 我本地安装的 JDK 版本是 11&#xff0c;配置如下&#xff1a; <properties><maven.compiler.source>…

谷歌gcp 远程计算机_引导性GCP:带有Google Cloud Pub / Sub的Spring Cloud Stream

谷歌gcp 远程计算机我最近在Sprint Central的工程博客上阅读了Josh Long的Bootiful GCP系列 &#xff0c;特别喜欢关于使用Google Cloud的Pub / Sub的第四部分 。 我感到受到该系列的启发&#xff0c;同时我还在为我的一个新项目评估Spring Cloud Stream。 我以为&#xff0c;我…

Oracle函数初探

我非常高兴有机会通过Cloud Native Limited Availability Program测试Oracle功能。 去年&#xff0c;当我上次尝试在Oracle Groundbreaker APAC巡回赛中在Oracle Cloud中运行无服务器功能时&#xff0c;有两种选择。 可以在虚拟机中运行我自己的Fn服务器&#xff0c;也可以在托…

在同一个tomcat中,使用不同的端口部署不同的项目

文章目录借助开发工具手动配置&#xff08;不使用开发工具&#xff09;第一步&#xff1a;修改 server.xml 文件第二步&#xff1a;创建部署目录第三步&#xff1a;复制 Catalina 目录第四步&#xff1a;复制 policy 和 properties 文件第五步&#xff1a;部署项目第六步&#…

jdk11换jdk8版本_在JDK 9(以及8)以及更高版本中,所有内容都可以作为一个流

jdk11换jdk8版本在JDK 8中&#xff0c;我们终于可以使用流了&#xff0c;除了您使用的API无法产生流的时代之外&#xff0c;其他一切都很好。 然后&#xff0c;您最终编写了一个包装器类方法&#xff0c;该方法允许您将迭代器转换为Stream&#xff0c;因为您错过了流。 public…

IntelliJ IDEA 的 Project Structure 窗口中的 Artifacts 勾选 Include in project build

文章目录在 war 工件勾选 Include in project buildBuild Project/ModuleRebuild Project/Module在 war exploded 工件勾选 Include in project build在 war 工件勾选 Include in project build war 工件处勾选 Include in project build&#xff0c;表示在构建项目/模块之后&a…

华为linux系统能用Cad么,华为平板能装cad画图吗 华为平板可以用cad软件吗?

华为平板可以用cad软件吗&#xff1f;华为平板是可以安装cad画图软件的&#xff0c;不管是什么设备&#xff0c;关键是操作系统符合下面的要求&#xff0c;就可以安装&#xff1a; 1、微软的window 系列操作系统 2、苹果的电脑操作系统 3、Linux系统华为mate平板可以安装CAD画图…

java客户端api文档_Java 11:新的HTTP客户端API

java客户端api文档在Java 11中&#xff0c;已将最初在Java 9中引入的孵化HTTP客户端API进行了标准化。 它使连接URL&#xff0c;管理请求参数&#xff0c;cookie和会话更加容易&#xff0c;甚至支持异步请求和websocket。 概括地说&#xff0c;这是使用传统的URLConnection方法…

linux date字符串日期格式,Linux中date用法

1、命令&#xff1a;date2、命令功能&#xff1a;date 可以用来显示或设定系统的日期与时间。3、命令参数-d&#xff1a;显示字符串所指的日期与时间。字符串前后必须加上双引号&#xff1b;-s&#xff1a;根据字符串来设置日期与时间。字符串前后必须加上双引号&#xff1b;-u…

jar/war/ear文件的区别

参阅&#xff1a; https://www.cnblogs.com/perfy/p/3597852.html https://blog.csdn.net/weixin_29022299/article/details/114063154 https://www.cnblogs.com/uriel/p/4874383.html https://www.cnblogs.com/sagech/p/4907163.html https://www.cnblogs.com/nizuimeiabc1/p/…

vim 命令模式 筛选_10个步骤的筛选器模式

vim 命令模式 筛选过滤器是仅在某些情况下应应用的模式。 在原始帖子中 &#xff0c;我提供了一个非常简单的示例&#xff0c;旨在演示如何应用它。 在这篇文章中&#xff0c;我提供了一个更详细的示例&#xff0c;该示例还旨在说明何时以及为什么应用它。 介绍 该职位包括以…

Maven的scope详解

文章目录依赖范围介绍compiletestprovidedruntimesystemimport依赖传递依赖范围与 classpath 的关系表参考依赖范围介绍 maven 项目不同的阶段引入到classpath中的依赖是不同的&#xff0c;例如&#xff0c;编译时&#xff0c;maven 会将与编译相关的依赖引入classpath中&…

linux下编译与运行,Linux操作系统驱动编译与运行是怎样的?

一、手工加载测试1、insmod 。/key_test。ko 加载驱动模块到内核2、cat /proc/modules |grep key_test 查看key_test模块在内核中的地址&#xff0c;不加过滤器可以看到全部加载的模块。3、lsmod 显示模块&#xff0c;这时可以看到所有的模块名字&#xff0c;后面跟的是主设备号…

spring mvc 提示_Spring BootHibernate提示

spring mvc 提示1.概述 Hibernate无需介绍。 它是Java中最受欢迎的ORM。 同样&#xff0c;Spring Boot是Java中功能最强大&#xff0c;最易于使用的框架。 本教程与Hibernate或Spring Boot无关&#xff0c;其中有大量的内容。 我们将研究在将它们一起使用时可能会遇到的一些…

异常:Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

执行 JDBC 有关代码时&#xff0c;报如下的异常&#xff1a; 原来是配置文件的内容有问题&#xff1a;

linux 端口tnpl,利用Python找出9个连续的空闲端口

这篇文章主要介绍了Python找出9个连续的空闲端口的方法&#xff0c;感兴趣的小伙伴们可以参考一下一、项目需求安装某软件&#xff0c;配置时候需要填写空闲的端口。查看5个平台的某个端口是否被占用5个平台为windows, linux, aix, hp, solaris二、实现方案有两种1、利用 pytho…