[精讚] [會員登入]
294

【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下

Wildfly的預設網址又臭又長又不好記,而且會被看到後端的目錄路徑安排,當然能藏就盡量藏起來啦

分享此文連結 //n.sfs.tw/15687

分享連結 【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2022-03-16 22:54:47 最後編修
2022-03-12 22:19:35 By 過路君子
 

哈囉大家好,這裡是發現可以直接使用建構式可以用的小編過路君子

直接將建構式帶入,一來不用傳遞變數後再產生,二來可以隱去在網址列的參數,但參數仍在封包內,這沒辦法。

 

 

Wildfly 中的預設網址又臭又長,而且不人性化還很難記,對於要分享網頁給其他人的時候非常不方便,那有沒有辦法能夠「縮網址」呢?

當然可以!但正確來說並不是縮網址,而是「掛載」到特定路徑下喔。

對於平常有在使用 Linux 的人來說,掛載這個詞應該不陌生,跟掛載檔案系統一樣,都是掛載到特定路徑下,但是比 Linux 的掛載更簡單!

 

那在開始之前,因為會跟 Maven 搭配,所以小編就先放出完整的目錄結構:

(所有圖片點擊都可以放大、變高清)

關於如何將 Wicket 部屬至 Wildfly 以及如何設定相關檔案,可以參考這篇:【Maven】[Wicket](Java) 如何部署Wicket到Wildfly內@小編過路君子

關於如何簡單新增 Wicket 的超連結,可以參考這篇:【Wickct】(link) <a> 如何新增超連結@小編過路君子

關於如何傳遞參數到其他頁面,可以參考這一篇:【Wickct】如何製作一個簡單的動態響應頁面和傳遞參數至其他頁面@小編過路君子

 

 

當我們今天部屬好 Wicket 之後,一連線到網頁伺服器時,喔~網址真的有夠漂亮。

但是一旦連結到其他的頁面時,卻發現網址突然就多了很多多餘的路徑。

那麼我們要如何將頁面放在我們想要的地方呢?

有兩種方式:原生掛載以及使用外掛,小編一一來為大家介紹:

 

原生掛載

小編在這裡會寫在 webRoute.java 內,那如果各位是要更新現有的 war 檔,那要打開寫在 web.xml 內的那個檔案寫入。

我們只會使用 mountPage 這個函數,那這個函數放在 org.apache.wicket.protocol.http.WebApplication 裡,使用前要先 import 進來。

其中 hello 是我們的首頁,another 是要連結的目的地。

package taiwan;

import org.apache.wicket.Page;
import org.apache.wicket.protocol.http.WebApplication;

//Must be import our web page package
import taiwan.webpage.hello;
import taiwan.webpage.another;

public class webRoute extends WebApplication
{
    @Override
    public void init()
    {
        super.init();

        //mount the page
        mountPage("/hello", hello.class);
        mountPage("/another", another.class);
    }
}

然後打包、部署至 Wildfly。

再次連線至首頁,這時可以看到我們的首頁已經掛載到我們所指定的路徑下囉。

然後再次連線至 another.html。

瞧~我們的頁面網址現在既簡單又乾淨,同時又方便傳遞出去!

 

 

使用wicketstuff-annotation掛載

如果需要相關的文件,可以前往這邊:Wicket Annotations 9.8.0 API

首先打開 pom.xml 並加入以下相依資訊。

<dependency>
    <groupId>org.wicketstuff</groupId>
    <artifactId>wicketstuff-annotation</artifactId>
    <version>9.8.0</version>
</dependency>

一樣先打開 webRoute.java 並輸入以下程式碼:

package taiwan;

import org.apache.wicket.protocol.http.WebApplication;
import org.wicketstuff.annotation.scan.AnnotatedMountScanner;

import taiwan.webpage.hello;
import taiwan.webpage.another;

public class webRoute extends WebApplication
{
    @Override
    public void init()
    {
        super.init();

        AnnotatedMountScanner scanner = new AnnotatedMountScanner();
        scanner.scanPackage("taiwan.webpage").mount(this);
    }
}

然後打開 hello.java 並只要添加一行即可。

喔對了,要 import org.wicketstuff.annotation.mount.MountPath; 之後才能使用。

@MountPath("/hello")    //this line
public class hello extends WebPage
{
    ...
}

another.java 也是一樣的動作。

@MountPath("/another")    //this line
public class hello extends WebPage
{
    ...
}

執行結果如下:

跟使用原生方式掛載結果一模一樣,這也是最棒的結局。

 

 

兩種方式都可以,但小編個人覺得後者方式比較好,因為只要請對方在 class 前面掛上 @MountPath("/whatever") 就好。

而且目前是 webRoute.java 還很簡單,所以要掛載新的頁面還算方便,可是等到網頁成長到非常龐大、掛載非常多頁面的時候,那要添加新的一行就要往下找到不知道多下面,十分的不方便。

所以還是能採用 @MountPath 就採用吧,小編猜應該是不會有人故意掛載的位置跟檔案名稱不一樣吧?

 

 

 

後記

不同於前幾篇是小編去網路上撈以及過濾資訊,這篇後半的 wicketstuff-annotation 方法是有人直接提供給小編,對方把一些核心指令全部丟過來,然後小編就依序放到正確的位置、打包和部屬。

唉,可以跑了,而且正常,好感謝對方,省下了小編不少麻煩。

END

你可能感興趣的文章

【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下 Wildfly的預設網址又臭又長又不好記,而且會被看到後端的目錄路徑安排,當然能藏就盡量藏起來啦

【ESXI & Oepnwrt】基本錯誤處理 Oepnwrt 為一個自由度超高的軟體,很多事情都能請其幫忙完成,但也因此很複雜,這邊簡單的介紹幾個錯誤的處理方式

【JDA/discord bot】取得頻道第一筆或最新(最後一筆)的歷史訊息 在不處理訊息的先後順序下取得相關的歷史訊息

【C++】使用SFML製作讓方塊落下的畫面 從開啟新視窗延伸過來的應用(?),配合上一篇所使用到開啟一個可渲染視窗的那堆程式碼的延伸。

【Discord bot】[botton]按鈕的使用、響應和關閉 Discord的botton通常都要和View配合使用。

【教程】[HTML](進階版)如何在手機上編輯電子書(epub)預覽介面 可能會有人認為電子書(epub)只能用電腦來開啟、編輯,其實不是的,手機也可以編輯喔!

<<此文不開放留言>>

隨機好文

高捷少女:小穹與果仁巧克力㊦ 「如果妳跟一個女生同班三年,看過她午休流口水跟狼吞虎嚥地吃午餐,就算變成高捷代言人,也很難把她當女神的啦!」她說,小穹氣得搶走她義大利麵裡的蝦子,其他人笑得花枝招展。

高捷少女:地下城的探險少女① 婕兒心中一奇,便走上前看著仔細。那塊凹進去的地方中心大約三公分厚,越往邊緣就越淺,圓型直徑十五公分。婕兒拿出銅盤對比一下,發現兩者大小竟然一致,銅盤似乎能夠完整的嵌進去。     婕兒看著凹槽,心中

高捷少女:地下城的探險少女④ 耐耐突然抖了一下。「妳們聽到了嗎?」她說。「聽到什麼?」婕兒問。「那個腳步聲啊!」耐耐嚥了一下喉嚨,覺得有些害怕。「有一陣腳步聲經過,很小聲,但我還是聽到了。』「妳聽錯了吧……等等!」婕兒使終維持著將

【歌評】蓮台野夜行 -古の冥界寺 古老的冥界寺 冥界?那是什麼地方?該不會是像地獄那樣的地方吧?!

【想法】關於網路上的謾罵這檔事 網路是個自由的世界,每個人都享有平等的發言權,但是,請永遠記得,在網路上漫罵別人一定會留下證據的,就算之後刪文,你怎能確保對方沒有截圖存證?