学习写一个web框架入门 如何加载配置(一)

一直以来都觉得写框架是一个很困难的事情,但是随着经验的增加也开始研究了一些主流的webmvc框架,现在依样画瓢来完成一个最简单的框架。
既然是web框架servlet是必不可少的
一般的主流web框架加载配置不外乎xml配置filter或者listener当然或许也有用servlet的。。
我们先看下用listener filter 以及servlet的配置
首先我用一个servlet 2.5的api

<filter>
<filter-name>testFilter2</filter-name>
<filter-class>cn.github.studyframework.filter.TestFilter2</filter-class>
</filter>
<filter>
<filter-name>testFilter1</filter-name>
<filter-class>cn.github.studyframework.filter.TestFilter1</filter-class>
</filter>
<filter-mapping>
<filter-name>testFilter1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>testFilter2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>testServlet1</servlet-name>
<servlet-class>cn.github.studyframework.servlet.TestServlet1</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>testServlet1</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>testServlet2</servlet-name>
<servlet-class>cn.github.studyframework.servlet.TestServlet2</servlet-class>
<load-on-startup>-111</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>testServlet2</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

<listener>
<listener-class>cn.github.studyframework.listener.TestListener2</listener-class>
</listener>
<listener>
<listener-class>cn.github.studyframework.listener.TestListener1</listener-class>
</listener>

代码中各个init方法我们都加上system.out.println这样可以看出servlet加载的先后顺序
启动容器
可以看出listener首先执行 其次是fitler 最后才是servlet.listener跟fitler的执行顺序跟配置先后相关。
最后说下servlet
[color=red]在servlet上 load-on-startup 这个参数可以控制servlet的加载策略以及顺序。
0是立即加载 正数越大加载越慢。负数跟不配置调用才会执行。
我使用tomcat6 7都是这样的顺序,但是我本机用的嵌入式的jetty 这个时候-111明显执行而且优于0,也许是jetty默认的设置原因,但是请使用servlet的人都注意点[/color]
最后的结论是我建议大家使用listener来加载,这样优先级更高。
下章继续说明。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值