目前正在使用Wicket + xhtml + JQuery + Spring + Hibernate在做一个电子商务网站,类似于京东的那样,通过这些时间的使用,总结了一下Wicket 学习笔记。
Wicket 的页面包含两个基本的文件,分别.html 和.java 文件,.html文件负责界面的描述,.java文件负责实现逻辑了,比如提供数据。在默认的情况下,.html和.java放在同一个包里面,wicket引擎的默认搜索路径是在java文件的所在的包下面搜索,我很不喜欢这种方式,因为如果文件一多,混在一起很不好定位,而且如果你是使用Eclipse WTP来开发Web项目,你可能会将html文件放在 WebContent 的pages文件夹下,将资源(比如图片,CSS,JS) 放在Web工程下面的 WebContent 文件夹下的resource文件夹下(注意,我使用的是Wicket 1.4,不能引用resources文件夹的文件,很奇怪,难道resources是关键字?),这样的话,在pages文件夹下面的html文件可以直接将resource 文件夹作为参考目录进行引用,比如pages下面的IndexPage.html可以通过 <!--endfragment--><!--endfragment-->
这样使用 resource/styles/common/ 文件夹下面的 common.css 文件,图片也可以通过这样引用。如果你将html和java文件放在同级目录,就没有这么方便了,可能需要在路径前面添加N个 ” ../ ” 这样的符号来定位上级目录
那到底怎么样才能分类html和java文件呢? <!--endfragment-->
那
你可以自己创建 ResourceStreamLocator
的子类来自定义搜索路径。然后在你的WebApplication中这样添加
getResourceSettings().setResourceStreamLocator(new EasyBuyResourceStreamLocator(getServletContext()));
在我的项目中我简化了包结构,下面是我的包结构:
<!--endfragment-->
<!--endfragment-->
我将页面java代码(继承自 org.apache.wicket.markup.ht ml.* 下 的类)放在page源文件夹下面,非页面java代码放在src源文件夹下面,conf源文件夹放Hibernate和Spring的配置文件。page源文件下面的包结构和WebContent下面的pages文件夹保持一致。
我的 ResourceStreamLocator 子类是这样写的:
<!--endfragment-->
/**
* 资源定位器。
*
* @author 刘尧兴 2009-10-16
*/
public class EasyBuyResourceStreamLocator extends ResourceStreamLocator {
/** */
private ServletContext servletContext;
/**
* 构造函数。
* @param servletContext
*/
public EasyBuyResourceStreamLocator(ServletContext servletContext) {
this.servletContext = servletContext;
}
@Override
public IResourceStream locate(Class<?> clazz, String path) {
if(matchClass(clazz, ParentPage.class)) {
URL resourceUrl = getPageHtmlResourceUrl(clazz, path);
if (resourceUrl != null) {
return new UrlResourceStream(resourceUrl);
}
}
if(matchClass(clazz, ParentPanel.class)) {
URL resourceUrl = getPanelHtmlResourceUrl(clazz, path);
if(resourceUrl != null)
return new UrlResourceStream(resourceUrl);
}
// resource not found; fall back on class loading
return super.locate(clazz, path);
}
/**
* 匹配文件类型 。
* @author 刘尧兴
* @param source
* @param target
* @return boolean
*/
public boolean matchClass(Class source,Class target) {
if(source == target)
return true;
if(source.getSuperclass() == target)
return true;
if(source.getSuperclass().getSuperclass() == target)
return true;
if(source.getSuperclass().getSuperclass().getSuperclass() == target)
return true;
return false;
}
/**
* 货物HTML页面资源URL 。
* @author 刘尧兴
* @param clazz
* @param path
* @return URL
*/
private URL getPageHtmlResourceUrl(Class<?> clazz, String path) {
try {
return servletContext.getResource("/"+path);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
/**
* 获得HTML面板的资源URL 。
* @author 刘尧兴
* @param clazz
* @param path
* @return URL
*/
private URL getPanelHtmlResourceUrl(Class<?> clazz, String path) {
try {
return servletContext.getResource("/"+path);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
}
我的WebPage页面都继承自我自定义的ParentPage类,在资源定位器搜索的时候时判断一下类型,这样就不会将其他的WebPage的资源给拦截了,比如Wicket自带的页面错误页面。
<link href="resource/styles/common/common.css" rel="stylesheet" type="text/css">
分享到:
相关推荐
3. **资源管理**:Wicket 使用`IResourceStreamLocator`和`IResourceStream`接口管理静态资源,如CSS、JavaScript文件。 **五、Wicket 的优点** 1. **学习曲线平缓**:Wicket 的API简洁明了,使得新手能够快速上手...
总之,Wicket Maven 库是 Wicket 开发者的重要资源,它提供了构建 Wicket 应用程序所需的所有依赖,简化了项目的构建和维护。通过熟练掌握 Maven 和 Wicket 的基本概念和用法,开发者可以更高效地利用这个库来开发出...
【标题】:“apacke-wicket-mvn编译”指的是使用Apache Maven构建工具来编译一个基于Apache Wicket的项目。Apache Wicket是一款开源的Java Web应用框架,它以组件为基础,提供了丰富的功能来帮助开发者创建动态、...
开发Wicket应用可以使用Eclipse、IntelliJ IDEA等主流IDE,它们通常都有对应的Wicket插件,提供代码提示、调试等便利功能。 10. **学习资源** 如链接所示,ITEYE博客上有关于Wicket的教程,这是学习Wicket的一个...
使用资源包聚合多个资源 16.8。将JavaScript放在页面正文中 16.9。标题贡献者定位 16.10。自定义资源 16.11。安装资源 16.12。Lambda支持 16.13。共享资源 16.14。自定义资源加载 16.15。CssHeaderItem和...
过滤器(Filter)是Servlet技术的一个重要补充,它允许在请求到达目标资源之前对其进行拦截和处理。例如,IP访问限制可以通过过滤器实现,当请求到达时,过滤器会检查请求者的IP地址,如果不符合预设规则,则拒绝...
Wicket 与其他Web框架的不同之处在于它采用了组件驱动的开发模式。每个HTML元素都可以与Java对象对应,这些对象称为组件,它们负责处理用户的交互事件和呈现页面。这种设计使得Wicket能够轻松地实现页面状态管理,...
本文将详细介绍如何在 Eclipse 中使用 Maven 创建一个 Wicket 项目,以及运行和调试的基本步骤。 #### 一、Wicket 入门概述 Apache Wicket 是一款开源的 Java Web 开发框架,它的设计目标是使 Java 开发者能够像...
在本文中,我们将深入探讨Wicket框架中的国际化(i18n)实现,以及如何使用`wicket:message`和`StringResourceModel`等工具来读取`.properties`资源文件。Wicket是一个流行的Java web应用程序框架,它提供了强大的...
这个压缩包包含了一个Wicket的开发指南PDF文档以及一些示例项目,这些都是学习和掌握Wicket框架的重要资源。 一、Wicket框架简介 Wicket的核心理念是"组件就是一切",它将Web页面的HTML与Java代码紧密结合,通过...
Wicket 相关书籍是深入理解和掌握这个框架的重要资源,下面将针对这些书籍提供的知识进行详尽的概述。 首先,"Apache Wicket Cookbook" 是一本实用指南,旨在帮助开发者快速解决在使用 Wicket 进行Web开发时遇到的...
Wicket的核心功能之一是作为页面布局管理器,允许开发者通过继承已有的标记来实现页面的头部、页脚、左侧菜单、内容等部分。此外,Wicket支持页面继承,可以有效地重用页面布局和逻辑。在页面标记方面,Wicket使用了...
- **资源文件**:使用资源文件管理不同语言的文本。 - **本地化设置**:通过配置文件指定不同的语言环境。 以上是对《Wicket开发指南》中关键知识点的详细总结,旨在帮助读者快速掌握Wicket的核心概念和技术要点。
- Wicket 使用基于 Session 的状态管理机制,确保每个用户的会话独立且隔离。 #### 四、Wicket 基本控件 - **信息输出控件:** - **Label:** 用于显示简单的文本信息。 - **MultilineLabel:** 用于显示多行...
在本文中,我们将深入探讨Wicket框架中关于Tree组件的简单使用方法,这对于初学者来说是一份极好的学习资源。Wicket是一个强大的Java Web应用程序框架,它提供了丰富的组件库,其中包括用于显示层次结构数据的Tree...
Wicket是一个开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“Wicket的HelloWorld”程序是初学者入门Wicket的典型例子,它展示了如何利用Wicket框架创建一个简单的Web应用。 ...
Wicket是一款开源的Java Web应用程序框架,它强调组件化和模型-视图-控制器(MVC)的设计模式。这个“wicket简单实例”是为了帮助初学者理解Wicket的工作原理和基本操作,通过运行这些示例,你可以深入学习Wicket的...