HelloWorld demonstrates the basic structure of a web application in Wicket. A Label component is used to display a message on the home page for the application.
In all the Wicket examples, you have to put all files in the same package directory.
This means putting the markup files and the java files next to one another. It is
possible to alter this behavior, but that is beyond the scope of this example. The
only exception is the obligatory web.xml file which should reside
in the WEB-INF/ directory of your web application root folder.
If you wish to start building this example, you may want to take a look at the Wicket Quickstart project, which provides a quick way of getting up and running without having to figure things out yourself. The Quickstart project contains the necessary build files (Ant and Maven), libraries, minimal set of Java and markup files and an embedded Jetty server to run your application without having to go through the whole build-deploy cycle.
Each Wicket application is defined by an Application
object. This object defines what the home page is, and allows for
some configuration.
package wicket.examples.helloworld;
import wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication
{
public HelloWorldApplication()
{
}
public Class getHomePage()
{
return HelloWorld.class;
}
}
Here you can see that we define wicket.examples.helloworld.HelloWorld
to be our home page. When the base URL of our application is requested, the
markup rendered by the HelloWorld page is returned.
package wicket.examples.helloworld;
import wicket.markup.html.WebPage;
import wicket.markup.html.basic.Label;
public class HelloWorld extends WebPage
{
public HelloWorld()
{
add(new Label("message", "Hello World!"));
}
}
The Label is constructed using two parameters:
"message""Hello World!"Label component in your HTML markup.
The second parameter is the message which the Label should
render.
<html>
<body>
<span wicket:id="message">Message goes here</span>
</body>
</html>In this file, you see two elements that need some attention:
<span wicket:id="message">
Message goes here
wicket and the component identifier message.
The component identifier should be the same as the name of the component you
defined in your WebPage. The message between the
<span> tags is removed when the component renders
its message. The final content of the component is determined by your Java
code.
<?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>
<display-name>Wicket Examples</display-name>
<servlet>
<servlet-name>HelloWorldApplication</servlet-name>
<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>wicket.examples.helloworld.HelloWorldApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldApplication</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
</web-app>
In this definition you see the Wicket servlet defined, which handles all
requests. In order to let Wicket know which application is available,
only the applicationClassName servlet parameter is needed.
Also, notice the url-mapping to /app/*. This ensures that the Wicket servlet will only process requests made to the application itself, not to (static) resources that are outside the realm of the Wicket application, such as style sheets, JavaScript files, images and so forth.
That's it. No more configuration necessary! All you need to do now is to deploy the web application into your favourite application server. Point your browser to the url: http://<servername>/<warfilename>/app, substituting servername and warfilename to the appropiate values, such as http://localhost:8080/helloworld/app.
As you can see: no superfluous XML configuration files are needed to enable
a Wicket application. Only the markup (HTML) files, the Java class
files and the required web.xml were needed to create this
application.