<强>需求说明强>
做项目时,为了省事,起初把初始化的配置都放在每个类中静态加载,初始化配置一多,就想把它给整理一下,这里使用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> (); List listPayUrl=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初始化加载顺序详解