Hasor Hello Word

2018-10-09 10:53 更新

我們通過(guò)一個(gè) MVC 的例子作為 Hasor Web 框架的這一個(gè)小結(jié)通過(guò) Web MVC 例子,來(lái)展示使用 Hasor 接收一個(gè) Web 請(qǐng)求然后交給 jsp 去顯示。

為了保證請(qǐng)求和響應(yīng)的編碼正確,我們要在啟動(dòng)入口中配置做一下聲明。配置好以后 Hasor 框架會(huì)幫助我們?cè)O(shè)置 request/response 的編碼為 UTF-8。

public class StartModule extends WebModule {
    public void loadModule(WebApiBinder apiBinder) throws Throwable {
        //設(shè)置請(qǐng)求響應(yīng)編碼
        apiBinder.setEncodingCharacter("utf-8", "utf-8");
    }
}


接著創(chuàng)建請(qǐng)求處理器,一個(gè)請(qǐng)求處理器可以簡(jiǎn)單的只包含一個(gè) execute 方法。

public class HelloMessage {
    public void execute(Invoker invoker) {
        invoker.put("message", "this message form Project.");
    }
}


將請(qǐng)求處理器注冊(cè)到框架中有兩種辦法,下面是通過(guò)手動(dòng)注冊(cè)的方式來(lái)集中管理。

public class StartModule extends WebModule {
    public void loadModule(WebApiBinder apiBinder) throws Throwable {
        ...
        apiBinder.mappingTo("/hello.jsp").with(HelloMessage.class);
        ...
    }
}


另一種是,通過(guò) @MappingTo 注解讓框架自動(dòng)發(fā)現(xiàn)。第二種辦法的好處是:方便,不需要將每個(gè)請(qǐng)求控制器都進(jìn)行注冊(cè)。使用更加簡(jiǎn)單。

public class StartModule extends WebModule {
    public void loadModule(WebApiBinder apiBinder) throws Throwable {
        ...
        //掃描所有 @MappingTo 注解
        apiBinder.scanMappingTo();
        ...
    }
}

@MappingTo("/hello.jsp")
public class HelloMessage {
    ...
}


最后創(chuàng)建 hello.jsp 視圖文件,我們把 message 打印出來(lái):

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello Word</title>
</head>
<body>
${message}
</body>
</html>


當(dāng)上面的一切都做好之后,啟動(dòng)您的 web 工程,訪問(wèn): http://localhost:8080/hello.jsp 即可得到結(jié)果。


在上面的例子中,我們的 HelloMessage 控制器并沒(méi)有指定視圖,Hasor 框架會(huì)自動(dòng)根據(jù)請(qǐng)求路徑來(lái)確定渲染視圖。如果您的控制器根據(jù)不同的邏輯需要指定不同的視圖,那么將它們分來(lái)開(kāi)定義。例如:

apiBinder.mappingTo("/forward.do").with(HelloMessage.class);
public class HelloMessage {
    public void execute(RenderInvoker invoker) {
        invoker.put("message", "this message form Project.");
        if (test){
            invoker.renderTo("jsp","/hello.jsp");
        } else {
            invoker.renderTo("jsp","/error.jsp");
        }
    }
}

運(yùn)行項(xiàng)目,請(qǐng)求 http://localhost:8080/forward.do 頁(yè)面就會(huì)根據(jù)您的邏輯來(lái)渲染對(duì)應(yīng)的視圖。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)