web.xml里的主要配置都包括什么,都代表什么含义?


讲解视频

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

web.xml作用:

当我们用IDEA创建一个webapp项目时,往往在WEB-INF文件夹下,会生成一个web.xml文件,这个配置文件的作用,就是初始化配置信息的。

比如:Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。如果工程不需要上述配置时,则web.xml就不是必需的了。

2.知识剖析

web.xml配置元素:

web.xml配置元素

1.根元素

web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素中, 都必须标明这个web.xml使用的是哪个模式文档。其它的元素都放在之中,也是根节点。

2.上下文参数

含有一对或多对参数名和参数值,用作应用的Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的, 在web应用的整个生命周期中上下文初始化参数都存在,Servlet和jsp任何时候可以对其进行访问。

3.监听器

Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。

在application,session,request三个对象创建、销毁或者属性变动时自动执行代码的功能组件。

常见的listener有:ServletContextListener、ServletRequestListener、HttpSessionListener等。

4.过滤器

过滤器对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。

5.servlet

servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。 Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。

servlet后常跟servlet-mapping,该元素在Servlet和URL样式之间定义一个映射,即servlet类提供一个url,在地址栏输入对应的映射路径就可以访问servlet。

3.常见问题

web.xml的加载过程,元素的加载顺序

4.解决方案

WEB容器启动时,加载过程如下:

1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。

2.然后,容器创建一个ServletContext,这个web项目的所有部分都将共享这个上下文。

3.容器将转换为键值对,并交给servletContext。

4.容器创建&lft;listener>中的类实例,创建监听器。

首先可以肯定的是,加载顺序与它们在web.xml文件中的先后顺序无关。即不会因为filter写在listener的前面而会先加载filter。 同时还存在着这样一种配置节:context-param,它用于向ServletContext提供键值对,即应用程序上下文信息。

web.xml的加载顺序是:context-param->listener->filter->servlet而同个类型之间的实际程序调用的时候的顺序是根据对应的mapping的顺序进行调用的。

load-on-startup元素标记容器是否在启动的时候就加载这个servlet,当配置了多个servelet的时候,容器就需要读取它的值来决定加载顺序。

当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet。

正数的值越小,该servlet的优先级越高,应用启动时就越先加载。所以,x,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。

5.编码实战

6.扩展思考

filter、listener、interceptor之间的区别

filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应: 在执行servlet之前,首先执行filter程序,并为之做一些预处理工作; 根据程序需要修改请求和响应; 在servlet被调用之后截获servlet的执行

listener的作用则与接口类型有关,监听器是在发生关注的事件后回调开发者提供的方法。

interceptor 拦截器,类似于filter,不过它不在web.xml中配置,跟使用的框架有关,如果使用Spring框架则在spring容器指定的配置文件中配置;并且不是针对URL的,而是针对action,当页面提交 action时,进行过滤操作。

7.参考文献

https://www.cnblogs.com/shangxiaofei/p/5328377.html

http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html

8.更多讨论

web.xml可选元素和出现次数?

web-app (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*,env-entry*, ejb-ref*, ejb-local-ref*

问号(?)表示子元素是可选的,而且只能出现一次。星号(*)表示子元素可在部署描述符中出现零次或多次。

url-pattern有哪些匹配规则?

精确匹配 路径匹配 匹配任意的url

ptteng.github.io/PPT/PPT-java/JAVA-task2-web.xml.html#/

你可能感兴趣的:(web.xml里的主要配置都包括什么,都代表什么含义?)