【修真院java小课堂】web.xml里的主要配置都包括什么,都代表什么含义,比如怎么加载Spring 配置的?

Spring MVC的web.xml配置详解           

java小课堂

分享人:方广辉

       

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

           

            1.背景介绍

       

            web.xml是servlet规定的启动配置文件,凡属基于servlet的javaWeb容器必遵守这个规范,而目前主流的容器都是基于servlet的,因此可以理解web.xml是每个javaweb应用都离不开web.xml配置文件.

web.xml完整的名字应该叫做部署描述符文件,当容器启动时会去读这个文件,然后加载相关配置,该文件通常会放在WEB-INF文件夹下。当我们去启动一个WEB项目时,Tomcat首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。

web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的Application。

            2.知识剖析

     

            web.xml基本元素

            元素1 context-param

            含义context-param 元素用来设定web应用的环境参数(context),它包含两个子元素:param-name和param-value.

            元素2,3  filter与filter-mapping

            含义filter元素用来设定web应用的过滤器,它的两个主要子元素filter-name和filter-class用来定义Filter所对应的class,filter-mapping 元素的两个主要子元素filter-name和url-pattern.用来定义Filter所对应的URL.

           

元素4 listener

含义listener元素用来定义Listener接口,它的主要子元素为listener-class

监听器Listener就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。

元素5,6  servle、servlet-mapping

含义servlet元素的两个主要子元素servlet-name和servlet-class用来定义servlet所对应的class

servlet-mapping元素包含两个子元素servlet-name和url-pattern.用来定义servlet所对应URL.

                

3.常见问题

1)在Spring框架中是如何解决从页面传来的字符串的编码问题的呢?

2)web.xml中标签的加载顺序

4.解决方案

1. 配置一个编码过滤器

 

1.启动WEB项目的时候,容器首先会去它的配置文件web.xml读取两个节点:  listener和context-param。

2. 紧接着,容器创建一个ServletContext(application),这个WEB项目所有部分都将共享这个上下文。

3. 容器以context-param的name作为键,value作为值,将其转化为键值对,存入ServletContext。

4. 容器创建listener中的类实例,根据配置的class类路径listener-class来创建监听,

在监听中会有contextInitialized(ServletContextEventargs)初始化方法,启动Web应用时,系统调用Listener的该方法,在这个方法中获得:

context-param的值,得到这个context-param的值之后,你就可以做一些操作了。

5. 接着,容器会读取filter,根据指定的类路径来实例化过滤器。

6. 以上都是在WEB项目还没有完全启动起来的时候就已经完成了的工作。

如果系统中有Servlet,则Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以,Servlet的初始化都要比上面提到的那几个要迟。

7. 总的来说,web.xml的加载顺序是:context-param-> listener -> filter -> servlet。

其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载。

      

5.编码实战

web.xml各个配置详解

6.扩展思考

7.参考文献

文献一:&nbsphttps://blog.csdn.net/zuoluoboy/article/details/4213053

文献二:&nbsphttp://www.cnblogs.com/hxsyl/p/3435412.html

文献三:&nbsphttps://blog.csdn.net/qing_gee/article/details/50965562

8.更多讨论

url请求在web.xml的servlet里的处理过程是怎么样的

当浏览器发起一个url请求后,该请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如url是http://10.43.11.143/myapp/kata/detail.html,其应用上下文是myapp,容器会将http://10.43.11.143/myapp去掉,剩下的/kata/detail.html部分拿来做servlet的映射匹配。

web.xml中的标签有顺序吗

web.xml的加载顺序是:context-param-> listener -> filter -> servlet


过滤器再web.xml中的编写有没有顺序?

没有顺序,多个过滤器会按照web.xml文件中顺序加载

猜你喜欢

转载自blog.csdn.net/qq_40747710/article/details/80654893