一直以来都觉得写框架是一个很困难的事情,但是随着经验的增加也开始研究了一些主流的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
在servlet上 load-on-startup 这个参数可以控制servlet的加载策略以及顺序。
0是立即加载 正数越大加载越慢。负数跟不配置调用才会执行。
我使用tomcat6 7都是这样的顺序,但是我本机用的嵌入式的jetty 这个时候-111明显执行而且优于0,也许是jetty默认的设置原因,但是请使用servlet的人都注意点
最后的结论是我建议大家使用listener来加载,这样优先级更高。
下章继续说明。
分享到:
相关推荐
本书所讲的是Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和维护高质量的Web应用。 第一章:介紹Django 第二章 入门 第三章 视图和URL配置 第四章:模版 第五...
表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。.. 表现层框架struts 2:讲解struts 2...
Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF等基础框架给出了示范。在持久层,AppFuse采用了Hibernate O/R映射...
1.7.1 创建第一个Java Web项目 1.7.2 将图片输出到JSP页面之中 1.8 疑难解惑 1.8.1 Tomcat端口被占用导致不能启动 1.8.2 Eelipse没有创建JSP项 1.9 精彩回顾 第2章 JavaWeb开发必修课 ——JSP语法 2.1 本章学习任务...
想必每一个配置Spring的人都已经或多或少了解过一些SpringMVC的基础知识,可能有的人用的myeclipse或者eclipse进行项目的搭建,我会告诉你这里步骤是很相似的,在myeclipse里面需要建立web项目,然后加入Spring支持...
Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler
Sman是一个轻量级的web网络多线程爬虫框架,无需配置即可完成一个自定义的网络爬虫。本框架可以作为爬虫的入门学习
Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于...
(推荐)从python django配置到 django一步步配置开发环境到实例开发。非常适合喜欢django框架开发的朋友学习讨论。
表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。.. 表现层框架struts 2:讲解struts 2...
表现层框架struts 1:讲解struts 1的入门配置、核心组件、标签库、国际化、数据校验、sitemesh集成、数据库开发技术,并分别实现与hibernate、ibatis持久层框架的集成开发。.. 表现层框架struts 2:讲解struts 2...
Furion Web开发框架是一个为了让 .NET 开发更简单,更通用,更流行的开发框架。 Furion框架特点: 全新面貌:基于 .NET5/6 平台,没有历史包袱 极少依赖:框架只依赖两个第三方包 极易入门:只需要一个 Inject() ...
7.1 Mybaits入门 1 环境搭建 1 .1 依赖包下载 首先下载mybatis的jar包: /mybatis/...Mybatis配置文件 log4j配置文件 测试包,包含一个测试类 mappers包存放sql映射,一个sql映射包含一个接口和一个xml文件 do
使用 Java 注解取代 XML 配置 使应用充分做到“前后端分离” 客户端可使用 HTML 或 JSP 作为视图模板 服务端可发布 REST 服务(使用 REST 插件) 客户端通过 AJAX 获取服务端数据并进行界面渲染 提高应用程序的开发...
Java后端开发是目前非常热门的技术方向之一,下面是一个从入门到工作的Java后端学习路线图: 1. 基础知识学习: - 学习Java语言基础:掌握Java的语法、面向对象编程等基本概念。 - 学习数据结构和算法:了解常用...
本章文件夹下有sampledb.sql文件,将其导入mysql中,会创建一个数据库sampledb,包含两张数据表。导入方法如下图: 3 项目组织 创建一个java工程,名为springJDBC,包和类组织如下图所示。 测试资源文件夹放配置文件...
NanoFramework是一个用于快速开发Web及任务调度项目的框架,以极少量的配置即可搭建Web项目或任务调度项目。环境要求NanoFramework基于JDK8进行开发,内部使用了JDK8的一部分新特性,开发时必须使用JDK8进行开发和...
支持(主从表)一对一前后端代码全自动生成、并支持数据源自动绑定与业务代码扩展,不需要写任何代码 支持一对多从表自定义扩展(不限从表类型与从表数量) , 一对多从表使用扩展可轻松实现 框架适用范围 编写各种后台...
文件名与介绍: [Database-support-...[myDbPoolUse]C3P0连接池配置/DBCP连接池配置/Apache的DBUtils框架使用 [myFilterDemoWeb]过滤器Filter学习-设置全站编码与设置页面缓存 [myGzipWeb]全站压缩 [myJavaMainDe
文章目录创建Django框架项目web服务启动成功图Django Web应用框架的使用和快速入门创建自己的另外一个应用开发view页面配置url映射路径成功访问创建模版login.html创建视图函数路径配置全局路径成功实现MTV模式开发...