JavaWeb中web . xml初始化加载顺序详解

  

<强>需求说明

  

做项目时,为了省事,起初把初始化的配置都放在每个类中静态加载,初始化配置一多,就想把它给整理一下,这里使用servlet中的初始化方法初始化。

  

<强> web . xml说明

  

首先了解下web . xml中元素的加载顺序:

  
      <李>启动网络项目后,web容器首先回去找web . xml文件,读取这个文件   <李>容器会创建一个ServletContext (servlet上下文),整个web项目的所有部分都将共享这个上下文   <李>容器将转换为键值对,并交servletContext给李   <李>容器创建中的类实例,创建监听器李   <李>容器加载过滤器,创建过滤器,要注意对应的filter-mapping一定要放在过滤器的后面李   <李>容器加载servlet,加载顺序按照Load-on-startup来执行   
  

完整加载顺序:ServletContext→context-param→侦听器→过滤器→servlet

  

<>强配置实现

  

InitServlet.java:

     /* *   *初始化系统参数   *创建者科帮网   *创建时间2017年5月10日   *   */公开课InitServlet扩展HttpServlet {   私有静态最终长serialVersionUID l=1;   @Override   公共空间init () {   尝试{   如果(Constants.PAY_URL.size ()==0) {   ListlistPayUrl=PropertiesListUtil.listPayUrl ();   (CommonEntity实体:listPayUrl) {   entity.getEntityName Constants.PAY_URL.put (entity.getEntityCode () ());   }   }   LogUtil.info(“佛祖保佑永不宕机永无错误:初始化系统数据数量:”+ Constants.PAY_URL.size ());   Configs.init (“zfbinfo.properties”);   LogUtil.info(“初始化支付宝配置信息”);   .loadPropertiesFromSrc SDKConfig.getConfig () ();   LogUtil.info(“初始化银联支付配置信息”);   }捕捉(异常e) {   e.printStackTrace ();   }   }/* *   *重新加载配置文件   * @Author科帮网   * @param请求   * @param响应   * @throws ServletException   * @throws IOException   * @Date 2017年5月10日   *更新日志   * 2017年5月10日张志朋首次创建   *   */@Override   公共空间doGet (HttpServletRequest请求,HttpServletResponse响应)   抛出ServletException IOException {   常量。PAY_URL=new ConcurrentHashMap<字符串,String> ();   ListlistPayUrl=PropertiesListUtil.listPayUrl ();   (CommonEntity实体:listPayUrl) {   entity.getEntityName Constants.PAY_URL.put (entity.getEntityCode () ());   }   LogUtil.info(“初始化系统数据数量:”+ Constants.PAY_URL.size ());   }   @Override   公共空间doPost (HttpServletRequest请求,HttpServletResponse响应)   抛出ServletException IOException {   doGet(请求、响应);   }   }   之前      

web . xml(部:分配置)

        & lt; !——初始基础化数据——比;   & lt; servlet>   & lt; servlet-name> InitServlet   & lt; servlet-class> com.acts.web.common.servlet.InitServlet   & lt; load-on-startup> 1 & lt;/load-on-startup>   & lt;/servlet>   & lt; servlet-mapping>   & lt; servlet-name> InitServlet   & lt; url-pattern>/InitServlet   & lt;/servlet-mapping>      

<强> servlet介绍

  

<强>什么是servlet

  

servlet是太阳公司为开发动态网络而提供的一门技术,用户若想用发一个动态网络资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

  
      <李>编写一个Java类,实现servlet接口。   <李>把开发好的Java类部署到web服务器中。   
  

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为servlet。

  

<强> servlet的运行过程

  
      <李>浏览器发出请求,被网络容器获取到李   <李> Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。   <李>装载并创建该Servlet的一个实例对象,调用Servlet实例对象的init()方法。   <李>创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。   <李> WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的破坏()方法
      李

    JavaWeb中web . xml初始化加载顺序详解