Hasor Hello Word

2018-10-09 10:53 更新

我们通过一个 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 页面就会根据您的逻辑来渲染对应的视图。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号