JavaWeb-JavaWeb之web.xml标签介绍

本文深入解析web.xml文件的结构与配置,包括XML声明、DTD声明、根元素<web-app>的作用,以及<display-name>、<description>、<filter>、<welcome-file-list>、<session-config>、<listener>和<servlet>等关键标签的使用方法。同时,阐述了这些配置如何影响Web应用的运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一行是 XML 声明,它定义 XML 的版本 (1.0) 和所使用的编码 (UTF-8)

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

第二行的“DOCYTPE”声明必须紧跟在XML 声明之后,这个声明会告诉服务器适用的servlet规范的版本(如2.3),并指定管理此文件其余部分内容的语法的DTD

<!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd">

第三行的<web-app></web-app>标签就是此文件的根元素,web.xml文件的最主要的配置信息就包含在这个标签之内,xml文件不仅对大小写敏感,而且还对出现在其他元素中的次序敏感。所以标签的大小写一定要使用正确,而且XML声明必须是文件中的第一项,DOCTYPE声明必须是第二项,而web-app元素必须是第三项。同样在web-app元素内,元素的次序也很重要。

<web-app></web-app>

标签指出此Web应用的应用名称

<display-name>wdp application</display-name>

对此Web应用的一些描述信息

<description>xxxx</description>

过滤器,<filter-name>标签指定此过滤器的名字,<filter-class>标签指定此过滤器指向的类(EncodingFilter),此类必须实现javax.servlet.Filter接口)<filter-mapping> 配置什么规则下使用这个Filter

<filter>
    <filter-name>encoding</filter-name>
 <filter-class>com.smics.apps.core.setup.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>encoding</filter-name>
	<url-pattern>*.action</url-pattern>
</filter-mapping>
/*    */ public class EncodingFilter
/*    */   implements Filter
/*    */ {}

当用户访问Web应用时,如果仅给出Web应用的根访问URL(/ProjectName/),没有指定具体的文件名,容器会调用<weblcome-file-list> 标签里指定的文件。<welcome-file-list>里允许有多个<welcome-file>元素,每个元素代表一个文件。容器会按顺序寻找,先找第一个文件是否存在,如果存在则会把这个文件显示出来,不再寻找其他文件。如果不存在则寻找第二个文件,依次类推。如果所有文件都不存在,则抛出404错误。

<welcome-file-list>
	<welcome-file>index.html</welcome-file>
	<welcome-file>index2.html</welcome-file>
</welcome-file-list>

<session-config>标签用于设置浏览器与服务器之间会话(交互)时长的间隔,以分钟为单位。用户访问Web项目时,会与服务器之间建立一个session,当用户长时间未与服务器信息交互而超过这个时长时,服务器会销毁这个session,释放占用的内存空间,当用户再次在原来的session访问时会失效,需要重新建立新的session

<session-config>
	<session-timeout>30</session-timeout>
</session-config>

<listener>标签指定监听器,用于监听Web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>标签用于指定此Web应用的servlet相关配置,<servlet-name>标签指定此servlet的名字,<servlet-class>指定servlet的类,一般会继承HttpServlet类,用来初始化整个Web项目和接受http请求并处理,<load-on-startup>标签指定当前Web应用启动时装载Servlet的次序,它的内容必须是整数,当这个数>=0时,容器会按数值从小到大依次加载。如果数值<0或没有指定,容器将在用户首次访问时加载这个servlet类,<servlet-mapping>标签可定义servlet映射,里面的<servlet-name>必须与前面的名字一致,<url-pattern>指定servlet映射的路径。在用Tomcat启动整个web项目时,当配置了<load-on-startup>标签并且里面的数字>=0时,会加载此servlet类,创建类的实例,调用init()方法初始化<init-param>标签里面的配置信息,此初始化在整个servlet生命周期中只会进行一次。如果未配置<load-on-startup>标签或数字<0时,Tomcat启动时不会加载此servlet类,当然也就不会调用init()方法进行初始化,当用户首次访问时会加载类并初始化,所以此时第一次访问时可能会加载很慢。

<servlet>
    <servlet-name>sitemesh-freemarker</servlet-name>
    <servlet-class>com.smics.apps.core.setup.sitemesh.DefaultFreemarkerDecoratorServlet</servlet-class>
	<init-param>
		<param-name>TemplatePath</param-name>
		<param-value>/</param-value>
	</init-param>
       <load-on-startup>1</load-on-startup>
</servlet>	
<servlet-mapping>
    <servlet-name>sitemesh-freemarker</servlet-name>
    <url-pattern>*.dec</url-pattern>
</servlet-mapping>

转载于:https://my.oschina.net/qrmc/blog/3017937

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值