Wicket是什么

Wicket一个开发Java Web应用程序框架。

它使得开发web应用程序变得easy而轻松。

Wicket利用一个POJO data beans组件使得它能够与不论什么持久层技术相结合。

Wicket使用原生的HTML元素,通过标签<wicket:id>声明为特殊的控件,在后台使用java程序控制这些控件。

Wicket最大的长处就是把视图层和控制层进行了分离。

Java version

这里我用的是Apache Wicket 7.x版本号,所以JDK最低版本号是1.7(博主在用JDK1.7发现缺少java.util.concurrent.ConcurrentLinkedDeque。所以改为JDK1.8)

Servlet API

在这我们须要使用最低servlet3.X版本号

pom.xml配置文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ztz.wicket</groupId>
<artifactId>wicket</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-request</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-util</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1-b08</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<filtering>false</filtering>
<directory>src/main/java</directory>
<includes>
<include>*</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

在这里我想说明wicket中 全部的组件页面是通过java类相应的 ,也就是说我有一个HelloWorld页面 页面 那么就有一个HelloWorld.java类 并且默认必须在同一文件夹(包)下 当然这是能够自己配置的 ,正是由于如此所以须要在maven的pom增加资源的引入。在build中增加该xml。

		<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<filtering>false</filtering>
<directory>src/main/java</directory>
<includes>
<include>*</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>

项目结构是:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

上面们说了。wicket是通过类来代表页面。所以HelloWorld.java与HelloWorld.html对应。

页面用对应标签引用类比如wicket 我们往加入注入一个标签类页面用对应标签引用类比如wicket 我们往加入注入一个标签类

add(new Label("message","Hello world----wicket"));

那么页面我们能够这么写<span wicket:id="message"></span>

以下我们来说下详细实现:

代表web项目的项目 是WebApplication 该类能获得项目上下文 servlet相关 ,同一时候也是一个apache wicket初始化相关 能获得apache wicket这个项目中各个组件部分。继承该类 就类似于实现WebApplicationInitializer接口一样 。该类必须实现getHomePage 方法以下是我写的一个类。

package cn.ztz.application;

import org.apache.wicket.Page;
import org.apache.wicket.protocol.http.WebApplication;
/**
* @author azhong
* @version 1.0
* 2015-08-06 22:44:44
*
*/
public class HelloWorldApplication extends WebApplication { @Override
public Class<? extends Page> getHomePage() {
return HelloWorld.class;
} }
package cn.ztz.application;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
/**
* @author azhong
* @version 1.0
* 2015-08-06 22:46:34
*
*/
public class HelloWorld extends WebPage {
public HelloWorld(){
add(new Label("message","Hello world----wicket"));
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Wicket demo</title>
</head>
<body>
<span wicket:id="message">
这是标签显示,当后台启动应用,应用通过HelloWorld.class能够在HelloWorld.class处理好相关数据 ,
然后通过label类 把属性注入到该页面 该页面通过wicket:id引用
</span>
</body>
</html>

以下我们来配置web.xml相关过滤器:

	<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>cn.ztz.application.HelloWorldApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HelloWorldApplication</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

启动项目,在浏览器请求:

hello world就说到这里 ,或许大家认为比較奇怪吧,HelloWorld.class 与HelloWorld.html放在一起 ,下一集还有一种配置能够用曾经习惯。

PS:转载注明出处,谢谢。

最新文章

  1. 微服务和SOA服务
  2. Python3.4下安装pip和MySQLdb
  3. speechSynthesis
  4. mysql 非安装版本就可以用, 用于打包用
  5. Partition分组使用和行列转换
  6. css中图片的四种地址引用
  7. 面试题_125_to_133_Java 面试中其他各式各样的问题
  8. sb 讲解 (!(~+[])+{})[--[~+&quot;&quot;][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
  9. bgycoding
  10. C#中&amp;与&amp;&amp;的区别
  11. UML造型——使用EA时序图工具的开发实践和经验
  12. cocos-Lua中的class与require机制
  13. emWin表盘界面设计,含uCOS-III和FreeRTOS两个版本
  14. Elasticsearch(ES)API 增删查改常用操作
  15. BZOJ 1029 [JSOI2007]建筑抢修 (贪心 + 优先队列)
  16. Entity Framework 同一个上下文中,如何进行对同一个实体进行指定字段更新
  17. C#正则表达式提取HTML中IMG标签的SRC地址
  18. Invoke,BeginInvoke的作用
  19. Java-汉字繁体拼音转换
  20. jqury动画,循环

热门文章

  1. 13-Linux中进程与线程的概念以及区别
  2. MapReduce实现线性回归
  3. android YUV Sensor配置Camera应用的flash auto菜单
  4. poj--2391--Ombrophobic Bovines(floyd+二分+最大流拆点)
  5. DispatcherServlet 前置控制器
  6. UVA Building designing
  7. Chromium Graphics : GPU Accelerated Compositing in Chrome
  8. ping 原理及ICMP协议简介
  9. nuxt 关闭ESlint 语法检测
  10. 参考学习《Python学习手册(第4版)》高清中文PDF+高清英文PDF+源代码