项目需要用到Wicket,对于我来说,这可真是个新兴事物。市面上用此框架的例子极少,但幸好有前人书写了《Wicket开发指南》,到底还是或多或少安慰了我对陌生事物恐惧的心灵。
1. 我们从web.xml开始着手:
<filter>
<filter-name>MyApplication</filter-name>
<filter-class>
org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>com.web.MyApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>MyApplication</filter-name>
<url-pattern>/do/*</url-pattern>
</filter-mapping>
在web.xml中描述使用WicketFilter作为Wicket的请求处理类,并使用applicationClassName作为外部参数,显然,这样做的目的是将WebApplication绑定到一个Filter。
2. 分析WicketFilter的初始化
如web.xml配置表现出的可能行为一致,WicketFilter通过WebAppFactory创建WebApp,并将自身和WebApp进行了绑定、执行WebApp的初始化。
3. 分析WebApplication的初始化
从图中表现分析WebApp的内部调用主要以定义HTML的链接解析为主。
另外,在上一步:“WicketFilter的初始化”中,对WebApp的最后几个调用来看,在完成内部初始化后,还调用外部定义的初始化方法init和组件的初始化方法initializeComponents。
WicketFilter初始化分析完毕,现在就来分析请求处理过程:
1. 先热热身,引用指南中对请求结构的描述:
2. 分析WicketFilter的请求处理
doFilter中没有重要的代码,看看核心的doGet:
这样看来,处理一个新的请求需要:
1. 包装HttpServletRequest到WebRequest;
2. 包装HttpServletResponse到WebResponse;
3. 建立一个新的请求上下文;
4. 调用WebApp的newRequestCycle建立请求过程;
5. 调用WebRequestCycle的request,处理请求。
3. 分析WebRequestCycle的request
图中的请求处理步骤描述:
1. 预备请求 (PREPAPE_REQUEST=1)
2. 目标处理 (RESOLVE_TARGET=2)
3. 事件处理 (PROCESS_EVENTS=3)
4. 响应请求 (RESPOND=4)
5. 分离请求 (DETACH_REQUEST=5)
6. 完成请求 (DONE=6)
其中,在1,2,3步中出现的任何错误都会直接跳入到第4步中。
关注“事件处理”和“请求响应”可以发现,它是将处理分派到对应的Target对象,由这些对象处理请求以返回结果。
至此源码的初读完毕,希望它对您有些许帮助。
- 大小: 149.5 KB
- 大小: 60.2 KB
- 大小: 37.1 KB
- 大小: 99 KB
- 大小: 125.2 KB
- 大小: 71 KB
分享到:
相关推荐
wicket文档和源码
wicket开发指南,wicket 新型的web开发框架,现以能无逢支持jsr168/286
Wicket开发指南 Wicket开发指南 Wicket开发指南
wicket1.5.9的例子,里面包含了源码。
Wicket has been around since 2004 and it has been an Apache project since 2007. During these years it has proved to be a solid and valuable solution for building enterprise web applications. Wicket ...
wicket国际化例子 含有wicket:message StringResourceModel 等读取properties资源文件的代码示例
wicket 开发指南 比较全面的介绍wicket的使用
wicket 基础知识培训,主要是讲解wicket入门知识,通过和struts比较来进行讲解。
wicket学习文档
wicket+spring应用,这个一个比较简单的源码,适合初学者
Wicket 入门,以及Eclipse里建立project
wicket编译所需的maven库,搬运
wicket 6.x api.chm wicket帮助文档
wicket-menu.zip,Wicket菜单
wicket-examples 示例 wicket-examples 示例 wicket-examples 示例 wicket-examples 示例
从wicket官网中下载的wicket1.4.7中jar包,对于编写wicket相关的程序有所需要的朋友可以下载
wicket例子和开发指南,指南为PDF文档,例子为wicket自带例子。
wicket相关书籍 好东西啊