web.xml中的listener、filter、servlet加载顺序及其详解转载

原创
小哥 3年前 (2022-10-27) 阅读数 6 #大杂烩

在项目中,我总会遇到一些关于装载的优先级问题,最近也遇到了类似的问题。因此,我找到了数据,并对其进行了总结。以下部分内容由其他人转载。毕竟,人们写得很好,所以我不会再制造轮子,只会添加我自己的一些修改。

首先,可以肯定的是,加载顺序与它们的 web.xml 文件中的顺序无关紧要。也就是说,不是因为 filter 写在 listener 将首先加载Will的正面。 filter。最后的结论是: listener -> filter -> servlet

还有一个配置部分:context-param,它被使用 ServletContext 提供键-值对,即。应用程序上下文信息。我们的 listener, filter 等等将在初始化期间使用这些上下文中的信息。 context-param 是否应写入配置节 listener 节前的配置怎么样?实际上 context-param 配置节可以在任何地方写入,因此 真正加载顺序为:context-param -> listener -> filter -> servlet

对于某些类型的配置节,它与它们出现的顺序相关。至 filter 为例,web.xml 当然,可以在中定义多个 filter,与 filter 相关的配置部分为 filter-mapping,这里需要注意的是,对于拥有相同的 filter-name 的 filter 和 filter-mapping 对于配置节,filter-mapping 必须出现在 filter 在此之后,否则在解析时。 filter-mapping 当它对应于 filter-name 尚未定义。web 在容器启动时初始化每个容器。 filter 什么时候,是按照 filter 当请求资源与多个资源匹配时,将按初始化顺序显示配置部分。 filter-mapping 时, filter 截取资源的基础是 filter-mapping 配置节按它们被调用的顺序显示。 doFilter() 方法的。

servlet 同 filter 类似 ,在此不再重复。

由此可见,web.xml 加载顺序为: context-param -> listener -> filter -> servlet ,并且相同类型之间的实际程序调用的顺序基于对应的 mapping 呼叫的顺序。

web.xml文件详解

Xml代码

  1. Web.xml常用元素

  2. 定义了WEB应用程序名称
  3.  声明WEB应用程序的描述信息
  4.  context-param元素声明应用程序范围内的初始化参数。
  5.  Filter元素将名称与实现组合在一起。javax.servlet.Filter接口的类是关联的。
  6.  命名筛选器后,即可使用它。filter-mapping元素将其与一个或多个servlet或JSP页面是关联的。
  7. servlet API的版本2.3增加了对事件侦听器的支持,这些侦听器可以建立、修改和删除会话或servlet环境在收到通知时。
  8. Listener元素的作用是:指示事件侦听器类。

  9.  在向servlet或JSP页面以开发初始化参数或自定义。URL必须先命名。servlet或JSP页面。Servlet元素用于完成此任务。
  10.  服务器一般是servlet提供默认设置URL:http://host/webAppPrefix/servlet/ServletName。
  11. 然而,这一点经常会改变。URL,以便servlet可以访问初始化参数或更轻松地处理相对URL。在更改默认设置中URL时,使用servlet-mapping元素。

  12.  如果某个会话在一段时间内未被访问,服务器可以将其丢弃以节省内存。
  13. 可使用以下方式制作HttpSession的setMaxInactiveInterval方法显式设置单个会话对象的超时值,或者可以使用。session-config元素的作用是:设置默认超时值。

  14. 如果Web应用程序考虑了特殊的文件,希望确保为它们分配一个特定的MIME类型,则mime-mapping元素提供了这样的保证。
  15.  指示服务器接收对目录名的引用,而不是对文件名的引用。URL要使用哪个文件。
  16.  当返回特定的HTTP可以在状态代码或抛出特定类型的异常时计算出要显示的页面。
  17.  对于标记库描述符文件(Tag Libraryu Descriptor file)指定别名。此功能使您能够更改TLD文件的位置,
  18. 而不编辑这些文件的使用。JSP页面。

  19. 声明与资源相关的管理对象。
  20.  声明资源工厂使用的外部资源。
  21.  发展应该保护的东西URL。它与login-config元素的组合使用
  22.  指定服务器应如何授权尝试访问受保护页面的用户。它已关联sercurity-constraint元素的组合使用。
  23. 提供将在中显示的安全角色列表servlet元素内的security-role-ref元素
  24. 的role-name子元素。单独声明角色可实现高级IDE它更容易处理安全信息。

  25. 声明Web适用的环境项目。
  26. 声明一个EJB对主目录的引用。
  27. < ejb-local-ref></ ejb-local-ref>声明一个EJB本地主目录的应用程序。

  28. 对应的元件配置

  29. 1、Web应用图标:指出IDE和GUI工具被用来表示Web应用了大图标和小图标

  30. /images/app\_small.gif
  31. /images/app\_large.gif
  32. 2、Web 应用程序名称:提供GUI可以使用工具来标记这一特定的Web应用程序的名称

  33. Tomcat Example
  34. 3、Web 应用程序描述: 给出了与此相关的说明性文本。

  35. Tomcat Example servlets and JSP pages.
  36. 4上下文参数:在应用程序范围内声明初始化参数。

  37. ContextParameter
  38. test
  39. It is a test parameter.
  40. 在servlet里面是可以传的。getServletContext().getInitParameter("context/param")得到

  41. 5,筛选器配置:带有实现的名称。javaxs.servlet.Filter接口的类是关联的。

  42. setCharacterEncoding
  43. com.myTest.setCharacterEncodingFilter
  44. encoding
  45. GB2312
  46. setCharacterEncoding
  47. /*
  48. 6、监听程序配置

  49. listener.SessionListener
  50. 7、Servlet配置

  51. 基本配置

  52. snoop
  53. SnoopServlet
  54. snoop
  55. /snoop
  56. 高级配置

  57. snoop
  58. SnoopServlet
  59. foo
  60. bar
  61. Security role for anonymous access
  62. tomcat
  63. snoop
  64. /snoop
  65. 元素说明

  66.  用于声明一个servlet数据,主要是下列子要素:
  67.  指定servlet的名称
  68.  指定servlet的类名称
  69.  指定web其中一个站台JSP网页的完整路径
  70.  用于定义参数,可以有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数。
  71. 指定当Web当应用程序启动时,加载Servlet的次序。
  72. 当值为正或零时:Servlet容器首先加载一个较小的值。servlet,然后依次加载其他值。servlet.

  73. 当值为负值或未定义时:Servlet容器将在Web客户是第一次访问该网站。servlet时加载它

  74.  用来定义servlet所对应的URL,包含两个子元素
  75.  指定servlet的名称
  76.  指定servlet所对应的URL
  77. 8、会话超时配置(分钟)

  78. 120
  79. 9、MIME类型配置

  80. htm
  81. text/html
  82. 10,指定欢迎文件页面配置

  83. index.jsp
  84. index.html
  85. index.htm
  86. 11,配置错误页

  87. 一、 按错误代码配置error-page

  88. 404
  89. /NotFound.jsp
  90. 上述配置在系统运行时发生。404发生错误时,跳转到错误处理页面NotFound.jsp。

  91. 2.通过异常类型配置error-page

  92. java.lang.NullException
  93. /error.jsp
  94. 上述配置在系统运行时发生。java.lang.NullException(即空指针异常),跳转到错误处理页面error.jsp

  95. 12、TLD配置

  96. http://jakarta.apache.org/tomcat/debug-taglib
  97. /WEB-INF/jsp/debug-taglib.tld
  98. 如果MyEclipse我一直在报告错误。,应该把 放到 

  99. http://jakarta.apache.org/tomcat/debug-taglib
  100. /WEB-INF/pager-taglib.tld
  101. 13、资源管理对象配置

  102. jms/StockQueue
  103. 14,资源工厂分配

  104. mail/Session
  105. javax.mail.Session
  106. Container
  107. 在此处配置数据库连接池:

  108. JNDI JDBC DataSource of shop
  109. jdbc/sample\_db
  110. javax.sql.DataSource
  111. Container
  112. 15、安全限制配置

  113. Example Security Constraint
  114. Protected Area
  115. /jsp/security/protected/*
  116. DELETE
  117. GET
  118. POST
  119. PUT
  120. tomcat
  121. role1
  122. 16、登录验证配置

  123. FORM
  124. Example-Based Authentiation Area
  125. /jsp/security/protected/login.jsp
  126. /jsp/security/protected/error.jsp
  127. 17、安全角色:security-role元素提供将在中显示的安全角色列表servlet元素内的security-role-ref元素的role-name子元素。

  128. 单独声明角色可实现高级IDE它更容易处理安全信息。

  129. tomcat
  130. 18、Web环境参数:env-entry元素声明Web适用的环境项目

  131. minExemptions
  132. 1
  133. java.lang.Integer
  134. 19、EJB 声明

  135. Example EJB reference
  136. ejb/Account
  137. Entity
  138. com.mycompany.mypackage.AccountHome
  139. com.mycompany.mypackage.Account
  140. 20、本地EJB声明

  141. Example Loacal EJB reference
  142. ejb/ProcessOrder
  143. Session
  144. com.mycompany.mypackage.ProcessOrderHome
  145. com.mycompany.mypackage.ProcessOrder
  146. 21、配置DWR

  147. dwr-invoker
  148. uk.ltd.getahead.dwr.DWRServlet
  149. dwr-invoker
  150. /dwr/*
  151. 22、配置Struts

  152. Struts Blank Application
  153. action
  154. org.apache.struts.action.ActionServlet

  155. detail
  156. 2
  157. debug
  158. 2
  159. config
  160. /WEB-INF/struts-config.xml
  161. application
  162. ApplicationResources
  163. 2
  164. action
  165. *.do
  166. index.jsp
  167. struts-bean
  168. /WEB-INF/tld/struts-bean.tld
  169. struts-html
  170. /WEB-INF/tld/struts-html.tld
  171. struts-nested
  172. /WEB-INF/tld/struts-nested.tld
  173. struts-logic
  174. /WEB-INF/tld/struts-logic.tld
  175. struts-tiles
  176. /WEB-INF/tld/struts-tiles.tld
  177. 23、配置Spring(基本上都在Struts在中配置)

  178. contextConfigLocation
  179. /WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml

  180. org.springframework.web.context.ContextLoaderListener
  181. org.springframework.web.context.request.RequestContextListener

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除