I think you are trying to put too much logic into your filter. Based on the docs, its appropriate to use a filter to convert an IoBuffer into some application specific object (ex. a generic Request object) but then the filter's work is done and this new object should be passed to an IoHandler.
In this design, a single filter would process every incoming IoBuffer and convert it the same way. Since there is only one filter, the problem of choosing which filter is gone.
The IoHandler then receives all incoming requests, figures out which is the LoginRequest, StudentRequest etc and handles it appropriately. The design of the request object and the logic to determine what type of request it is, is a part of your application, not part of MINA, so you can implement this any way you want.