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

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

    如果您需要创建一个自己的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);