大家好,這裡是終於前進網頁後端的小編過路君子
捨棄了方便成熟好用的 PHP,轉而投向規定相對嚴格的 Java 懷抱,反正動態更新以及資料庫 Java 也能做
那在開始之前小編在此先附上規格表:
| 軟體名稱 | 版本 |
| Maven | 3.8.4 |
| Wicket Core | 9.8.0 |
| Wildfly | 8.0.26 |
| Linux | CentOS 7 |
如果有需要查詢 Wicket 相關的 API,這邊有一個好用的查詢網站可以用:Wicket Core 9.8.0 API
關於 Wicket 它除了本體以外,還有其他的外掛可以使用(例如:wicketstuff-annotation),那這篇文章會將主題聚焦在其本體 wicket 上,不會引入任何外掛。
那既然是 Maven,這邊就先上小編的目錄配置圖:
(所有圖片點擊都可以放大、變高清)
通常是一個 html 搭配一個 java檔,然後置於同一目錄底下。
當然也可以分開放,但是如果是分開放就是要在 java檔案裡做特殊宣告。
接下來是 pom.xml 的配置,首先是 wicket 的 dependency 資訊:
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>9.8.0</version>
<type>pom</type>
</dependency>
然後是 build 資訊,這裡沒寫無法正確加載資源:
<build>
...
<resources>
...
<resource>
<directory>src/main/java/</directory>
<filtering>false</filtering>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
...
</resources>
...
</build>
小編看很多人的文章 <include>**</include> 是寫成 <include>*</include> 也就是打一個星星,但是小編依照那樣的寫法仍舊無法正常獲取資源。
是後來改成打兩個星星的寫法才能正確獲取資源,所以如果後面部屬完畢仍舊顯示無法抓到資源,可以試著將其改成一個星星就好。
接下來我們打開 web.xml 寫入以下資訊:
<filter>
<filter-name>main</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>taiwan.webRoute</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>main</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果各位檔案配置跟小編上圖一模一樣,則這邊不需要進行修改,若不一樣 <param-value></param-value>裡面的路徑請改成指向 webRoute.java 的路徑(從 java 目錄下開始)。
然後接著打開 webRoute.java 寫入以下程式碼:
package taiwan;
import org.apache.wicket.Page;
import org.apache.wicket.protocol.http.WebApplication;
import taiwan.webpage.hello;
public class webRoute extends WebApplication
{
@Override
public Class<? extends Page> getHomePage()
{
return hello.class;
}
}
這支程式只做一件非常簡單的事情:當今天有訪客連線進來的時候,若沒帶任何的參數,則預設顯示 hello.html 這個頁面。
接著打開 hello.html 寫入以下資訊:
<!doctype html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1><span wicket:id="text"></span></h1>
</body>
</html>
然後打開 hello.java 寫入以下程式碼:
package taiwan.webpage;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class hello extends WebPage
{
public hello()
{
Label msg = new Label("text", "Hello World!");
msg.setRenderBodyOnly(true);
add(msg);
}
}
接下來部署到 Wildfly 上,接著使用瀏覽器連線到網頁伺服器所在位置就能看到結果了喔!
至於要如何打包成 war 可以參考這篇: 【Maven】如何創建一個簡單可部屬的WAR檔@小編過路君子。
那又要如何透過 Maven 進行部署,可以參考這篇: 【Maven】用Maven來託管Wildfly/jBoss的部屬(deploy)、解部屬(undeploy)@小編過路君子。
後記
話說小編的 SQL 大約半年前就學了,本來想學完資料庫之後就接著架設網頁後端,但沒想到學完之後就被一堆事情壓上來,轉眼睛回過頭的時候已經過了半年了......
然後這之中也只有使用過一次,在這: 【CoreProtect】[SpigotMC] (進階篇) 如何直接存取資料@小編過路君子 。
也算還好有學過,要不到時資料拉出來發現是 .db(database) 然後又不會寫 SQL 就尷尬了。

