`
leitelyaya
  • 浏览: 68901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Wicket源码初读

    博客分类:
  • Java
阅读更多
项目需要用到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
分享到:
评论
2 楼 u010902814 2014-12-08  
好,但是自己还是迷迷糊糊的,需要钻研
1 楼 u010902814 2014-12-08  

相关推荐

    wicket文档和源码

    这个压缩包包含了与Wicket相关的文档和源码,是深入理解和学习Wicket框架的重要资源。 文档部分可能包括了Wicket的用户指南、开发者手册、API参考以及示例代码等。用户指南通常会介绍如何开始使用Wicket,包括安装...

    wicket 官方JAVA教程

    作为开源项目,Wicket的源码对于开发者来说是一份宝贵的资源。通过阅读源码,可以深入理解其工作原理,提升开发技能。 9. **开发工具** 开发Wicket应用可以使用Eclipse、IntelliJ IDEA等主流IDE,它们通常都有...

    wicket指南

    **Wicket 指南** **一、Wicket 框架概述** Wicket 是一个开源的、基于组件的 Java Web 开发框架,它提供了一种简单而强大的方式来构建动态、交互性强的Web 应用程序。Wicket 的设计哲学是将Web 页面的视图与业务...

    apacke-wicket-mvn编译

    这个版本可能包括了Wicket框架的源码、API文档、示例程序、库文件等。使用这个版本,开发者可以了解和学习Wicket 6.x系列的特性和使用方法,同时也可以直接在项目中引用这些库文件进行开发。 总结来说,这个压缩包...

    wicket_mvn库

    **Wicket Maven 库详解** Wicket Maven 库是一个针对 Apache Wicket 框架的 Maven 存储库,它包含了构建和运行 Wicket 应用程序所需的各种依赖项。Apache Wicket 是一个用于创建 Web 应用程序的开源 Java 框架,它...

    wicket开发指南 pdf

    **Wicket 开发指南** Wicket 是一个开源的、基于Java的Web应用程序框架,它以其组件化、模型-视图-控制器(MVC)架构和轻量级特性而受到开发者们的青睐。本指南将深入探讨Wicket的核心概念、工作原理以及如何有效地...

    Wicket 入门

    ### Wicket 入门与 Eclipse 项目创建指南 在当今的 Web 开发领域,Java 框架扮演着举足轻重的角色,其中 Apache Wicket 是一个强大的、面向组件的 Java Web 应用框架,它简化了 Web 应用的开发过程。本文将详细介绍...

    wicket简单实例

    **Wicket简单实例详解** Wicket是一款开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例...

    wicket国际化例子

    在本文中,我们将深入探讨Wicket框架中的国际化(i18n)实现,以及如何使用`wicket:message`和`StringResourceModel`等工具来读取`.properties`资源文件。Wicket是一个流行的Java web应用程序框架,它提供了强大的...

    Wicket.pdf(Wicket开发指南)

    ### Wicket 开发指南知识点概览 #### 一、Wicket 框架介绍 - **框架起源与发展:** - Wicket 是一种基于 Java 的 Web 应用框架,最初由 Marc Guillemot 和 Eelco Hillenius 开发。 - 该框架首次公开发布是在 ...

    wicket 基础知识培训

    Wicket 是一个开源的Java Web框架,用于构建可重用且易于维护的Web应用程序。它以其组件模型和数据绑定机制而闻名,与Struts等传统MVC框架相比,提供了更直观和面向对象的编程方式。 在Wicket基础知识培训中,首先...

    wicket的helloworld

    **Wicket HelloWorld程序详解** Wicket是一个开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“Wicket的HelloWorld”程序是初学者入门Wicket的典型例子,它展示了如何利用...

    wicket相关书籍

    Apache Wicket 是一个开源的Java Web应用程序框架,它以其组件化的模型、强大的状态管理和低级别的浏览器依赖性而受到开发者的欢迎。Wicket 相关书籍是深入理解和掌握这个框架的重要资源,下面将针对这些书籍提供的...

    wicket文档

    ### Wicket文档知识点详解 #### 1. Wicket简介 **1.1 Wicket前生后世篇** Wicket是一款开源的Java Web应用框架,它最初由Geert Bevin在2003年创建。其设计理念是提供一种简单、直观的方式来构建复杂的Web应用程序...

    前端项目-wicket.zip

    " Wicket-master " 这个文件名通常代表这是一个项目的主分支或源码仓库,很可能包含了整个Wicket项目的源代码、示例、文档和其他资源。"master"分支通常是Git版本控制系统中的默认分支,用于存放最新的、经过验证的...

    wicket例子和开发指南

    Wicket是一个开源的Java Web应用程序框架,它提供了一种组件化的开发方式,使得Web应用的构建更为简单和直观。这个压缩包包含了一个Wicket的开发指南PDF文档以及一些示例项目,这些都是学习和掌握Wicket框架的重要...

Global site tag (gtag.js) - Google Analytics