Handler是一个全局的拦截器,我们来看看Cloudopt Next自带的ShowRouteHandler。

    1. @AutoHandler
    2. class ShowRouteHandler : Handler() {
    3. override fun preHandle(resource: Resource) {
    4. //在请求处理之前进行调用
    5. if (ConfigManager.webConfig.showRoute) {
    6. val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    7. logger.info("Match route ----------------- " + df.format(Date())
    8. + " ------------------------------")
    9. logger.info("Method : " + resource.request.method())
    10. logger.info("Path : " + resource.request.uri())
    11. logger.info("User-Agent : " + resource.request.getHeader("User-Agent"))
    12. logger.info("Params : " + Jsoner.toJsonString(resource.request.params()?.entries() ?: "[]"))
    13. logger.info("Cookie : " + Jsoner.toJsonString(resource.request.getHeader("Cookie") ?: ""))
    14. logger.info(
    15. "--------------------------------------------------------------------------------")
    16. }
    17. }
    18. override fun postHandle(resource: Resource) {
    19. //请求处理之后进行调用,但是在视图被渲染之前
    20. }
    21. override fun afterCompletion(resource: Resource) {
    22. //在整个请求结束之后被调用
    23. }
    24. companion object {
    25. private val logger = Logger.getLogger(ShowRouteHandler::class.java)
    26. }
    27. }

    如果您需要创建一个自己的Handler,只需要继承Handler类即可。如果类上面添加了@AutoHandler注解,Cloudopt Next在启动时会自动注册。如果您只想手动注册的话,可以在服务器启动前手动增加。

    1. CloudoptServer.addHandler(ShowRouteHandler())
    2. CloudoptServer.run(App::class.java)
    1. CloudoptServer.addHandler(new ShowRouteHandler());
    2. CloudoptServer.run(App.class);