开发者社区> 问答> 正文

Java如何通过注解映射URL相应的action

最近在学习web的时候遇到一个问题,在服务器获取到请求地址的时候,如何通过相应的地址获取到对应的处理类。之前是通过自己写一张HashMap,String保存相应的地址,而Controller则是相应的处理类,通过在一个Handler类上进行重写每一个Controller类以及对应的String地址,在运行时进行加载。但是这样写好像有点傻逼,然后找到servlet是通过web.xml进行映射的.但是我觉得这种方式有点麻烦,而Spring是通过注解映射相应的URL.但是弄了半天还是不知道它具体的原理。有没有人能讲解一下它的解析原理?以及如何在运行时映射到相应的处理类?或者有别的更好的映射URL的方式?求告知。

展开
收起
蛮大人123 2016-03-12 11:02:07 3951 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    有很多方式可以实现,最常见是利用反射。简单举个例子把:

    UserController:
    //自定义注解 @webpath=/user/add
    public void add(){
    }
    //自定义注解 @webpath=/user/del
    public void delete(){
    }

    启动服务的时候,先获取所有Controller对象,然后通过这个对象反射遍历它所有方法,判断有注解webpath的保存起来,比如存到 Map。
    之后假设由一个servlet来监听所有请求(这里不讨论静态和动态请求的处理),就假设都是动态的,有两个请求如下:
    http://www.xxx.com/user/add
    http://www.xxx.com/user/del
    servlet就会收到这两个请求,根据request获取uri,拿到 /user/add 和 /user/del ,去路由map找到对应的方法。然后再通过反射来执行即可。

    2019-07-17 19:00:27
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载