深入WicketFilter源码学习,两个步骤,首先引用API中WicketFilter的描述,对WicketFilter做一个简单的介绍;接着从代码层面着手,剖析WicketFIlter。WicketFilter中init方法用来初始化应用资源,doFilter代理doGet方法,处理实际的Wicket请求。本篇文章主要对WicketFilter的init方法进行了深入了解。
API中wicketFilter的解释:
WicketFilter 用来处理wicket请求。
使用WicketFilter处理请求的优势:可以对Wicket 请求有选择性的处理。比如,wicket请求image资源,WicketFiler可以选择不处理。
属性说明:
FILTER_MAPPING_PARAM:给出定制web.xml的路径
init(FilterConfig filterConfig)
init(FilterConfig) goes through a series of steps of steps to initialise:
1. Sets up ignore paths //initIgnorePaths(filterConfig);
值的格式:/images/products/,/documents/pdf/
处理的时候去掉了开头的/
然后将值保存在 Set<String> ignorePaths中
2. Records class loaders
指定类加载器,加载web.xml文件。
3. Finds the filter's path - filterPath
通过处理web.xml文件,获得filterPath
关键方法:getFilterPath(filterConfig.getFilterName(), is)
4. Sets up the IWebApplicationFactory and WebApplication for this filter, including it's initialisation.
Creates the web application factory instance.
通过初始化参数applicationFactoryClassName指定定制的applicationFactory
否则创建默认:ContextParamWebApplicationFactory()
通过指定applicationClassName参数,创建Class.forName(applicationClassName, false, loader).newInstance()
// Store instance of this application object in servlet context to
// make integration with outside world easier
String contextKey = "wicket:" + filterConfig.getFilterName();
filterConfig.getServletContext().setAttribute(contextKey, webApplication);
// set the application thread local in case initialization code uses it
Application.set(webApplication);
// Call internal init method of web application for default
// initialization
webApplication.internalInit();
webApplication.init();(默认的WebApplication中init方法是没有提供实现的)
下面是webApplication.init()的一段说明,供参考
/**
* Initialize; if you need the wicket servlet for initialization, e.g. because you want to read
* an initParameter from web.xml or you want to read a resource from the servlet's context path,
* you can override this method and provide custom initialization. This method is called right
* after this application class is constructed, and the wicket servlet is set. <strong>Use this
* method for any application setup instead of the constructor.</strong>
*/
重点:
1、you can override this method and provide custom initialization
2、将app的一些setup放在init方法中
5. Initialise WebApplication request listeners.
调用org.apache.wicket.Initializer的init()
org.apache.wicket.extendsions.Initializer的init()
6. Log start of Application
记录应用开始
7. Detect if running in a Portlet context and if so intialise the WicketFilterPortletContext
portlet应用初始化
本篇对WicketFIlter的介绍,到此就结束了。
本人对WicketFilter有几个不是很清楚的地方:
1、wicket commponent的呈现,
2、wicketFilter对请求的具体处理过程,
3、Wicket作为一个事件驱动型框架,里面注册了一系列的监听器,目前还没做深入了解。
有兴趣的朋友,可以一起交流。
我的QQ:497724941
分享到:
相关推荐
【实战Wicket学习总结】 Wicket是一个Java Web应用程序框架,以其独特的组件模型和强大的MVC设计而备受赞誉。本文将基于三年的Wicket项目经验,深入探讨Wicket的关键特性和在实际开发中遇到的问题及解决方案。 1. ...
Wicket的核心功能之一是作为页面布局管理器,允许开发者通过继承已有的标记来实现页面的头部、页脚、左侧菜单、内容等部分。此外,Wicket支持页面继承,可以有效地重用页面布局和逻辑。在页面标记方面,Wicket使用了...
Wicket 是一个开源的、基于组件的 Java Web 开发框架,它提供了一种简单而强大的方式来构建动态、交互性强的Web 应用程序。Wicket 的设计哲学是将Web 页面的视图与业务逻辑解耦,使得开发者可以专注于应用的业务需求...
这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例,你可以深入学习Wicket的核心特性。 1. **Wicket_link**: 这个示例展示了如何在Wicket应用中创建链接。Wicket的`Link`...
### Wicket 1.4 开发手记:Hello World与环境配置 #### 一、引言 在《Wicket 1.4 开发手记》系列的第一篇文章中...对于想要学习Wicket或者寻求一种更加高效的Web开发方式的开发者来说,Wicket是一个值得尝试的选择。
【标题】:“apacke-wicket-mvn编译”指的是使用Apache Maven构建工具来编译一个基于Apache Wicket的项目。Apache Wicket是一款开源的Java Web应用框架,它以组件为基础,提供了丰富的功能来帮助开发者创建动态、...
Apache Wicket 是一个开源的Java Web应用程序框架,它以其组件化的模型、强大的状态管理和低级别的浏览器依赖性而受到开发者的欢迎。Wicket 相关书籍是深入理解和掌握这个框架的重要资源,下面将针对这些书籍提供的...
2. **Form组件**:表单组件是Wicket中最常用的组件之一,用于收集用户输入的数据。 - **添加组件**:可以将多个组件添加到一个表单中,例如: ```java Form<ClinicItem> form = new Form("form"); add(new ...
如链接所示,ITEYE博客上有关于Wicket的教程,这是学习Wicket的一个好起点。此外,官方文档、社区论坛和Stack Overflow等平台也是获取帮助和学习的好去处。 在压缩包"webLib"中,可能包含了Wicket应用的Web库文件...
Wicket Maven 库是一个针对 Apache Wicket 框架的 Maven 存储库,它包含了构建和运行 Wicket 应用程序所需的各种依赖项。Apache Wicket 是一个用于创建 Web 应用程序的开源 Java 框架,它采用模型-视图-控制器(MVC...
在本篇“Wicket的学习(二)”中,我们将深入探讨Apache Wicket这一强大的Java Web应用程序框架。Wicket以其组件化、模型-视图-控制器(MVC)的设计模式和强大的状态管理机制,在Web开发领域占据一席之地。这篇博客...
在本文中,我们将深入探讨Wicket框架中关于Tree组件的简单使用方法,这对于初学者来说是一份极好的学习资源。Wicket是一个强大的Java Web应用程序框架,它提供了丰富的组件库,其中包括用于显示层次结构数据的Tree...
通过分析和学习“wicket-menu-6.5.0.zip”中的源代码,开发者不仅可以掌握如何在Wicket中构建动态菜单,还可以学习到如何将这一技术应用到自己的项目中,提升用户体验。同时,开源的性质意味着可以借鉴社区的最佳...
**Wicket HelloWorld程序详解** ...Wicket的强大之处在于它的组件模型和强大的数据绑定机制,使得开发动态、交互性强的Web应用变得更加简单和直观。对于初学者来说,理解这些基础知识是进一步学习Wicket的关键。
在当今的 Web 开发领域,Java 框架扮演着举足轻重的角色,其中 Apache Wicket 是一个强大的、面向组件的 Java Web 应用框架,它简化了 Web 应用的开发过程。本文将详细介绍如何在 Eclipse 中使用 Maven 创建一个 ...
Wicket 与其他Web框架的不同之处在于它采用了组件驱动的开发模式。每个HTML元素都可以与Java对象对应,这些对象称为组件,它们负责处理用户的交互事件和呈现页面。这种设计使得Wicket能够轻松地实现页面状态管理,...
- **低学习曲线:** 相比其他框架,Wicket 提供了一个更直观的 API 和简洁的文档,使得新用户能够快速上手。 - **规则配置:** 减少了对 XML 配置文件的依赖,简化了开发流程。 - **Ajax 支持:** 内置了对 Ajax ...
Wicket是一款开源的Java Web应用程序框架,它强调了组件化和模型-视图-控制器(MVC)的设计模式。Wicket 1.4.0是该框架的一个版本,提供了丰富的功能和改进,使得Web开发更为简便。在本篇文章中,我们将深入探讨...