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标签,每个标签都有它自己的作用,咱们一个一个来看:
<web-app>
:这是整个web.xml
文件的根标签,所有的配置都在这个标签里面。<servlet>
:这个标签用来定义一个Servlet。Servlet是Java Web应用中用来处理HTTP请求的程序。在这段代码里,我们定义了一个名为my
的Servlet,它的完整类名是com.github.houbb.minicat.support.servlet.MyMiniCatHttpServlet
。<servlet-name>
:这是Servlet的名称,用来在其他地方引用这个Servlet。<servlet-class>
:这是Servlet的完整类名,服务器会用这个类名来创建Servlet的实例。<servlet-mapping>
:这个标签用来定义Servlet和URL之间的映射关系。当有请求到达服务器,服务器会根据这个映射关系,决定由哪个Servlet来处理请求。<servlet-name>
(在<servlet-mapping>
里):它引用上面定义的Servlet的名称。<url-pattern>
:这是URL的模式,服务器会用这个模式来匹配请求的URL。在这个例子里,所有以/my
结尾的请求都会由名为my
的Servlet来处理。<filter>
:这个标签用来定义一个Filter,Filter是Java Web应用中的一个组件,用来拦截请求和响应,做一些处理,比如日志记录、安全控制等。<filter-name>
:这是Filter的名称,用来在其他地方引用这个Filter。<filter-class>
:这是Filter的完整类名,服务器会用这个类名来创建Filter的实例。<filter-mapping>
:这个标签用来定义Filter的过滤规则,决定哪些请求会被这个Filter处理。<url-pattern>
(在<filter-mapping>
里):这是URL的模式,在这个例子里,/*
表示所有的请求都会被LoggingFilter
这个Filter处理。<listener>
:这个标签用来定义一个Listener,Listener是Java Web应用中的一个组件,用来监听应用中的某些事件,比如应用启动、关闭等。<listener-class>
:这是Listener的完整类名,服务器会用这个类名来创建Listener的实例。
通过这个web.xml
文件,服务器就知道你的应用有哪些Servlet、Filter和Listener,以及它们都是怎么工作的。
这样,当有请求到达服务器时,服务器就能够正确地处理这些请求,把它们交给合适的Servlet来处理,让Filter在处理前后做一些额外的工作,以及在应用的生命周期中触发Listener的事件。
简单来说,web.xml
就是一个告诉服务器你的Web应用是怎么运作的配置说明书。
从零手写例子
/\_/\
( o.o )
> ^ <
mini-cat 是简易版本的 tomcat 实现。别称【嗅虎】(心有猛虎,轻嗅蔷薇。)