codecamp

Hasor Hello Word

我们通过一个 MVC 的例子作为 Hasor Web 框架的这一个小结通过 Web MVC 例子,来展示使用 Hasor 接收一个 Web 请求然后交给 jsp 去显示。

为了保证请求和响应的编码正确,我们要在启动入口中配置做一下声明。配置好以后 Hasor 框架会帮助我们设置 request/response 的编码为 UTF-8。

public class StartModule extends WebModule {
    public void loadModule(WebApiBinder apiBinder) throws Throwable {
        //设置请求响应编码
        apiBinder.setEncodingCharacter("utf-8", "utf-8");
    }
}


接着创建请求处理器,一个请求处理器可以简单的只包含一个 execute 方法。

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


将请求处理器注册到框架中有两种办法,下面是通过手动注册的方式来集中管理。

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


另一种是,通过 @MappingTo 注解让框架自动发现。第二种办法的好处是:方便,不需要将每个请求控制器都进行注册。使用更加简单。

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

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


最后创建 hello.jsp 视图文件,我们把 message 打印出来:

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


当上面的一切都做好之后,启动您的 web 工程,访问: http://localhost:8080/hello.jsp 即可得到结果。


在上面的例子中,我们的 HelloMessage 控制器并没有指定视图,Hasor 框架会自动根据请求路径来确定渲染视图。如果您的控制器根据不同的逻辑需要指定不同的视图,那么将它们分来开定义。例如:

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");
        }
    }
}

运行项目,请求 http://localhost:8080/forward.do 页面就会根据您的逻辑来渲染对应的视图。


Hasor Web工程配置
Hasor 请求参数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }