W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們通過(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)的視圖。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: