• apache wicket 7.X之HelloWorld


    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>

    项目结构是:


    上面们说了。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:转载注明出处,谢谢。


  • 相关阅读:
    Aspnet_regiis加密web.config
    C#加密算法汇总
    ?? 运算符
    游戏外挂技术初探
    正则表达式语法
    C++Primer第四版13.5.1. 定义智能指针类的例子被new蒙蔽_BLOCK_TYPE_IS_VALID
    Adobe Flex 成为 Apache 基金会顶级开源项目
    程序员老黄历
    Flash多点触控体验和简介
    Flash开发人员必备:最新离线网页版ActionScript 3.0API文档、 flex 4.6 air 3.5 开发人员指南
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7115890.html
Copyright © 2020-2023  润新知