wicket开始使用wicket


备注

Wicket是一个基于组件的框架,它与早期的一些有时单调的Web编程任务的解决方案形成鲜明对比。与其他框架一样,Wicket构建在Sun的servlet API之上。

但是,与Struts或Spring MVC等框架不同,使用Wicket的开发人员大部分都是从Web和Servlet固有的请求/响应性质中删除的。 Wicket开发人员不仅要构建必须同时为许多用户和线程提供服务的控制器,接收请求,返回响应,而且不存储任何状态,而是根据有状态组件进行思考。他或她创建一个页面,在其上放置组件,并定义每个组件对用户输入的反应,而不是创建控制器或操作类。

Wicket使用普通的XHTML进行模板化。每个组件都绑定到XHTML中的命名元素,并负责在最终输出中呈现该元素。该页面只是顶级包含组件,并且只与一个XHTML模板配对。

每个组件都有自己的模型支持,该模型表示组件的状态。该框架不了解组件如何与其模型交互,这些模型被视为在请求之间自动序列化和持久化的不透明对象。然而,更复杂的模型可以是可拆卸的,并提供钩子以在每个请求周期的开始和结束时安排它们自己的存储和恢复。

在Wicket中,所有服务器端状态都是自动管理的。您永远不应该直接使用HttpSession对象或类似的包装器来存储状态。相反,state与组件相关联。每个服务器端页面组件都包含一个有状态组件的嵌套层次结构,其中每个组件的模型最终都是一个POJO(Plain Old Java Object)。

版本

发布日期
8.0.0-M4 2017年2月7日
7.6.0 2016年12月29日
6.26.0 2016年12月29日

安装或设置

我的第一个Wicket设置,应用程序在主屏幕上显示Hello World:

import org.apache.wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication {
    
    public HelloWorldApplication() {
    }
    
    @Override
    public Class getHomePage() {
        return HelloWorld.class;
    }
}
 

HelloWorld.java

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

HelloWorld.html的

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

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>
    <display-name>My first Wicket App</display-name>
    <filter>
        <filter-name>HelloWorldApplication</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
          <param-name>applicationClassName</param-name>
          <param-value>org.apache.wicket.examples.helloworld.HelloWorldApplication</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>HelloWorldApplication</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
 

的pom.xml

    <dependency>
        <groupId>org.apache.wicket</groupId>
        <artifactId>wicket-core</artifactId>
        <version>${wicket.version}</version>
    </dependency>