从零手写实现 apache Tomcat-02-web.xml 入门详细介绍

简介: `web.xml`是Java Web应用的核心配置文件,描述应用工作方式。它包含Servlet、Filter和Listener的定义。例如,示例展示了如何配置名为`my`的Servlet处理`/my`请求,`LoggingFilter`拦截所有请求,以及`MyServletContextAttrListener`监听应用事件。`web.xml`是服务器理解应用结构与行为的指南。迷你版Tomcat实现——mini-cat(开源:https://github.com/houbb/minicat)。

web.xml

web 应用,最核心的文件大概就是 web.xml 了。

在Java Web应用中,web.xml是一个非常重要的配置文件,它告诉服务器你的应用是怎么工作的,就像一个说明书一样。

例子

一般如下:

<?xml version="1.0" encoding="UTF-8" ?>
<web-app>

    <!-- servlet 配置 -->
    <servlet>
        <servlet-name>my</servlet-name>
        <servlet-class>com.github.houbb.minicat.support.servlet.MyMiniCatHttpServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>my</servlet-name>
        <url-pattern>/my</url-pattern>
    </servlet-mapping>

    <!-- Filter 配置 -->
    <filter>
        <filter-name>LoggingFilter</filter-name>
        <filter-class>com.github.houbb.minicat.support.filter.MyMiniCatLoggingHttpFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoggingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Listener 配置 -->
    <listener>
        <listener-class>com.github.houbb.minicat.support.listener.foo.MyServletContextAttrListener</listener-class>
    </listener>
</web-app>

详细介绍

这个文件里头写的都是些XML标签,每个标签都有它自己的作用,咱们一个一个来看:

  1. <web-app>:这是整个web.xml文件的根标签,所有的配置都在这个标签里面。

  2. <servlet>:这个标签用来定义一个Servlet。Servlet是Java Web应用中用来处理HTTP请求的程序。在这段代码里,我们定义了一个名为my的Servlet,它的完整类名是com.github.houbb.minicat.support.servlet.MyMiniCatHttpServlet

  3. <servlet-name>:这是Servlet的名称,用来在其他地方引用这个Servlet。

  4. <servlet-class>:这是Servlet的完整类名,服务器会用这个类名来创建Servlet的实例。

  5. <servlet-mapping>:这个标签用来定义Servlet和URL之间的映射关系。当有请求到达服务器,服务器会根据这个映射关系,决定由哪个Servlet来处理请求。

  6. <servlet-name>(在<servlet-mapping>里):它引用上面定义的Servlet的名称。

  7. <url-pattern>:这是URL的模式,服务器会用这个模式来匹配请求的URL。在这个例子里,所有以/my结尾的请求都会由名为my的Servlet来处理。

  8. <filter>:这个标签用来定义一个Filter,Filter是Java Web应用中的一个组件,用来拦截请求和响应,做一些处理,比如日志记录、安全控制等。

  9. <filter-name>:这是Filter的名称,用来在其他地方引用这个Filter。

  10. <filter-class>:这是Filter的完整类名,服务器会用这个类名来创建Filter的实例。

  11. <filter-mapping>:这个标签用来定义Filter的过滤规则,决定哪些请求会被这个Filter处理。

  12. <url-pattern>(在<filter-mapping>里):这是URL的模式,在这个例子里,/*表示所有的请求都会被LoggingFilter这个Filter处理。

  13. <listener>:这个标签用来定义一个Listener,Listener是Java Web应用中的一个组件,用来监听应用中的某些事件,比如应用启动、关闭等。

  14. <listener-class>:这是Listener的完整类名,服务器会用这个类名来创建Listener的实例。

通过这个web.xml文件,服务器就知道你的应用有哪些Servlet、Filter和Listener,以及它们都是怎么工作的。

这样,当有请求到达服务器时,服务器就能够正确地处理这些请求,把它们交给合适的Servlet来处理,让Filter在处理前后做一些额外的工作,以及在应用的生命周期中触发Listener的事件。

简单来说,web.xml就是一个告诉服务器你的Web应用是怎么运作的配置说明书。

从零手写例子

 /\_/\  
( o.o ) 
 > ^ <

mini-cat 是简易版本的 tomcat 实现。别称【嗅虎】(心有猛虎,轻嗅蔷薇。)

开源地址:https://github.com/houbb/minicat

相关文章
|
21天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
38 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
3月前
|
前端开发
【前端web入门第四天】02 CSS三大特性+背景图
本文详细介绍了CSS的三大特性:继承性、层叠性和优先级,并深入讲解了背景图的相关属性,包括背景属性、背景图的平铺方式、位置设定、缩放、固定以及复合属性。其中,继承性指子元素自动继承父元素的文字控制属性;层叠性指相同属性后定义覆盖前定义,不同属性可叠加;优先级涉及选择器权重,包括行内样式、ID选择器等。背景图部分则通过具体示例展示了如何设置背景图像的位置、大小及固定方式等。
264 91
|
1月前
|
XML 前端开发 Java
XML基本概念入门学习指南
XML(eXtensible Markup Language)是一种可扩展的标记语言,和HTML语言语法类似,同属于标记语言。
72 14
|
3月前
|
前端开发
【前端web入门第四天】01 复合选择器与伪类选择器
本文档详细介绍了CSS中的复合选择器与伪类选择器。复合选择器包括后代选择器、子代选择器、并集选择器和交集选择器,能够更精确地定位和样式化元素。后代选择器用于选中某元素的所有后代,子代选择器仅选中直接子元素。并集选择器可为多个标签设置相同样式,而交集选择器则选中同时满足多个条件的元素。此外,还介绍了伪类选择器,如鼠标悬停效果和超链接的不同状态。
69 32
【前端web入门第四天】01 复合选择器与伪类选择器
|
2月前
|
前端开发 JavaScript 开发者
探索现代Web前端技术:React框架入门
【10月更文挑战第9天】 探索现代Web前端技术:React框架入门
|
2月前
apache+tomcat配置多站点集群的方法
apache+tomcat配置多站点集群的方法
39 4
|
1月前
|
消息中间件 监控 Kafka
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
47 0
|
2月前
|
网络协议 安全 JavaScript
Web实时通信的学习之旅:WebSocket入门指南及示例演示
Web实时通信的学习之旅:WebSocket入门指南及示例演示
220 0
|
3月前
|
前端开发 开发者 Python
从零到一:Python Web框架中的模板引擎入门与进阶
在Web开发的广阔世界里,模板引擎是连接后端逻辑与前端展示的重要桥梁。对于Python Web开发者而言,掌握模板引擎的使用是从零到一构建动态网站或应用不可或缺的一步。本文将带你从基础入门到进阶应用,深入了解Python Web框架中的模板引擎。
45 3
|
2月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
55 0

推荐镜像

更多
下一篇
DataWorks