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