`

Wicket用户手册一:Hello World

阅读更多

第一个程序

接下来要做的程序就是那个人人耳熟能祥的"Hello World"(译注 :姜还是老的辣,原来外国人也好这一口 )。这个程序将给客户端输出一个简单的页面,页面上只显示"Hello,World"这个字符串。第二个程序中,允许用户在浏览器端进行输入,然后根据输入再在页面上给出相应的输出信息,不过那是后话。

这个程序将在浏览器输出以下HTML:

 <html>   <body>       Hello, world!   </body> </html>  

模板HTML

麻雀虽小,五脏俱全,程序尽管简单,但一样不少。在这个程序中,我们使用Wicket提供的一个叫做"Label"的控件来输出"Hello,World"这个字符串。这个程序包括两方面内容:

  1. HTML页面模板 
  2. Label控件
  3. Wicket程序的开发步骤

考虑到简化程序的开发,易于理解,所以在这个例子中没有使用样式表或其它HTML元素,开发人员可以根据自己的需要加入CSS样式表,也可以使用JavaScript。但对于我们的第一个Wicket程序,我们尽量的省略掉这些元素。

模板中有部分内容只是用来给设计人员看的(译注:因为设计人员一般都使用可视化设计工具,如果都为空,或者使用标签,设计人员就无法查看直接效果,这也是Wicket的一个优点),以便理解模板文件( 译注:如Message goes here,设计人员或者开发人员也可以在这个地方加上注释,便于理解),因为这些内容在最终输出到浏览器时会自动省略到这些内容,所以不会影响最终客户的浏览内容。为了让Wicket框架能正确的输出内容,你必须告诉Wicket框架,哪些控件是需要动态输出信息。接下来会告诉如何使用Label控件,以及在Wicket中如何定义这样一个控件。

<html>  <body>      <span wicket:id="message">Message goes here</span>  </body></html>  

我们使用HTML中的span元素,并加入wicket:id属性将自己标记为一个需要Wicket处理的控件(译注:其实也可以使用 其它方式来指定一个Wicket控件,如id="wicket-message"等,以后会有相关的文档专门讨论这个问题)。

仅有这样一个HTML模板还不足以输出我们的"Hello,World",我们仍然需要有一个Java对象来告诉Wicket如何输出这些信息,以及所要输出的信息。接下来我们将要编写这段Java代码。

Java代码

开发一个Wicket程序,需要完成两个任务,编写一个模板文件,另外再写一个Java类负责控件的输出。在这个例子中,我们只需要负责控制一个Label控件来输出"Hello,World"。

首先我们要写一个继承WebPage的类,以便负责控件的输出。在Wicket中,所有的的Web页面都继承WebPage这个类,Wicke使用规则匹配方式在模板文件和类自动进行,比如说对于com.wicket.demo.hello.IndexPage这个类,Wicket会自动在com.wicket.demo.hello这个包下面查找IndexPage.html这个HTML文件自动进行匹配。(译注:用户可以定制这个规则,我会在以后的文章里进行描述),这样做对于初学者而言可能有点奇怪。不过基于规则的东西,其实要比使用XML文件更容易理解,也容易维护(译注:象我现在对这种规则习惯了,在大街上看到美女,就习惯性的在她身边找她男朋友,如果没有,咱就给她配置一个)。这样实现了HTML和Java的分离,对于这样一个基于控件开发的框架而言,这样可以实现更好的控件的复用(也有利于设计人员和开发人员的分工)。

import wicket.markup.html.WebPage;import wicket.markup.html.basic.Label;public class HelloWorld extends WebPage{  public HelloWorld()  {    add(new Label("message", "Hello World!"));  }}  

当你添加一个控件时候,与普通的桌面程序有一点不同,那就是你需要以字符串的方式来指定一个ID号,用作唯一标识,Wicket就根据这个ID号将模板文件中的控件与Java文件中的控件进行匹配。因为要和HTML模板文件中的wicket:id对应,所以不能重复。

当Wicket处理页面,进行输出的时候,就会根据这个ID号在类查找相应的控件,并将输出的内容来替换模板中相同ID号指定控件的输出内容。就象上面指定了一个ID号为"message"的Label控件,并将Label控件输出的内容(即"Hello,World")替换原有的内容(即"Message goes here")。

<span wicket:id="message">Message goes here</span>  

除了一个标识身份的ID号以外,控件还必须有一个Model,至于使用什么样的Model,就由控件自己(也可以由程序员)决定。在上面例子中,Model的内容(即字符串"Hello World")用来替换span标签中的值。如果要定制自己的Model,就必须实现wicket.model.IModel接口。大部分的控件都中提供了使用Model参数的构造函数。至于Label控件,则提供了使用字符串的构造函数,其实在构造函数内部,Label仍然将字符串转换成了一个简单的Model.

通常Model用来为控件提供灵活性,也就是说控件只处理显示内容,而Model就可以通过各种方式来提供所要显示的内容,这样减少了控件的变化,从而有利于控件的开发,维护 和使用 。

如果要运行这个程序,我们仍然还需要完成一个Application对象,这个Application对象在系统中主要管理配置,这个类的代码将如下所示:

package mypackage;import wicket.protocol.http.WebApplication;public class HelloWorldApplication extends WebApplication{    public HelloWorldApplication()    {        getPages().setHomePage(HelloWorld.class);    }}  

使用web.xml配置Web程序

为了能够让Java服务器能够运行你的程序,你需要通过Web.xml文件配置系统。配置的内容如下所示:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app><servlet>  <servlet-name>HelloWorldApplication</servlet-name>    <servlet-class>wicket.protocol.http.WicketServlet</servlet-class>    <init-param>      <param-name>applicationClassName</param-name>      <param-value>mypackage.HelloWorldApplication</param-value>    </init-param>    <load-on-startup>1</load-on-startup></servlet><servlet-mapping>  <servlet-name>HelloWorldApplication</servlet-name>  <url-pattern>/helloworld/*</url-pattern></servlet-mapping></web-app>  

现在你就可以尝试运行你的第一个Wicket程序了。如果有问题,可以在文章下面提出问题,我会尽量回答。



评论

相关推荐

    wicket的helloworld

    这个“Wicket的HelloWorld”程序是初学者入门Wicket的典型例子,它展示了如何利用Wicket框架创建一个简单的Web应用。 在Wicket中,组件是构建Web页面的基本单元,可以是HTML元素,如按钮、文本框,也可以是更复杂的...

    Wicket 1.4 开发手记(一) helloworld与环境配置

    ### Wicket 1.4 开发手记:Hello World与环境配置 #### 一、引言 在《Wicket 1.4 开发手记》系列的第一篇文章中,作者Steel.Ma分享了他对Wicket框架的一些见解,特别是针对Wicket 1.4版本的入门级介绍。文章首先对...

    Wicket

    NULL 博文链接:https://fengyunxiao.iteye.com/blog/684835

    wicket简单实例

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

    wicket国际化例子

    通过`.properties`文件和`&lt;wicket:message&gt;`标签或`StringResourceModel`,我们可以轻松地为不同地区用户提供本地化的用户体验。配合`LocaleResolver`和`LanguageLink`,可以实现动态的语言切换功能,提升Web应用的...

    Wicket开发指南

    - **“Hello World”案例**:从简单的“Hello World”应用开始,逐步了解Wicket的基本工作流程。 - **Wicket应用开发步骤**: - **创建HTML模板**:定义应用程序的界面布局。 - **编写Java控制逻辑**:实现业务...

    Wicket开发指南-简体版

    通过简单的“Hello World”案例来快速上手Wicket框架。 **3.2 Wicket程序的开发步骤** - **制作一个HTML模板**:定义应用程序的基本布局。 - **编写Java控制代码**:实现业务逻辑。 - **编写Application**:定义...

    wicket_mvn库

    1. **Apache Wicket 框架**: Wicket 提供了一种声明式的方式来构建用户界面,使得开发人员可以专注于业务逻辑而不是复杂的 HTML 和 JavaScript。它的核心特点是组件化,每个 UI 元素都是一个可重用的 Java 对象,与...

    java-wicket手册(chm)

    有关wicket开发的api手册。chm版本,方便,全面,准确。

    wicket_examples:wicket_examples

    在Wicket 中,创建一个"Hello World" 页面涉及以下步骤: 1. 创建一个继承自`WebPage` 的Java 类,这个类代表你的页面。 2. 在类中定义一个或多个组件,例如一个`Label` 组件,用于显示“Hello, World!”。 3. 将...

    wicket例子和开发指南

    2. 第一个Wicket应用:介绍如何创建一个简单的"Hello, World!"应用,理解Wicket的基础架构。 3. 组件和页面:讲解Wicket中的组件模型,如何创建和使用组件,以及如何组织页面结构。 4. 模型和数据绑定:解释如何处理...

    apacke-wicket-mvn编译

    通过这个描述,我们可以推断这个压缩包包含了一个配置好的Apache Wicket项目,用户只需在Eclipse中安装Maven插件,然后导入项目,就可以开始开发了。 【标签】:“wicket”表明这个项目的核心技术是Apache Wicket。...

    wicket+spring

    在Java Web开发领域,Wicket和Spring都是非常流行的框架,它们分别在用户界面和依赖注入方面有着出色的表现。本文将深入探讨如何将这两个框架整合,创建一个高效、可维护的Web应用程序。 **Wicket 框架** Wicket是...

    wicket指南

    Wicket 是一个开源的、基于组件的 Java Web 开发框架,它提供了一种简单而强大的方式来构建动态、交互性强的Web 应用程序。Wicket 的设计哲学是将Web 页面的视图与业务逻辑解耦,使得开发者可以专注于应用的业务需求...

    8种Java Web框架安装手记及HelloWorld

    安装Wicket需要JDK,创建项目,引入Wicket库,编写Component和Page,启动服务器,即可访问HelloWorld。 每种框架都有其独特的优势和适用场景,开发者应根据项目需求和团队技术栈来选择合适的框架。这些框架的安装和...

    wicket文档

    本节介绍了一个简单的Wicket "HelloWorld" 示例,展示了如何快速搭建一个Wicket项目。 **3.2 Wicket程序的开发步骤** - **3.2.1 制作一个Html模板** 创建HTML布局文件作为基础模板。 - **3.2.2 编写Java控制...

Global site tag (gtag.js) - Google Analytics