in reply to
How does Dancer handle forms? How do other such frameworks do it?
Whether they use CGI; or not, is really not the point. The HTTP protocol is by now well-understood. So are the ways of decoding it such that the gathered data (a) will be correctly gathered in all cases, and (b) will be presented to you in an easily-manageable format ... maybe a hash containing scalars or lists in each bucket ... maybe accessor-methods.
One might wish that the frameworks, themselves were standardized, i.e. that they presented a consistent API to those who would like to write code that is “compatible with Everyframework,” but I don’t think that we will ever see that.