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

查看:376
本文介绍了Java如何通过注解映射URL相应的action的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

解决方案

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

UserController:

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

启动服务的时候,先获取所有Controller对象,然后通过这个对象反射遍历它所有方法,判断有注解webpath的保存起来,比如存到 Map<String, Method>。

之后假设由一个servlet来监听所有请求(这里不讨论静态和动态请求的处理),就假设都是动态的,有两个请求如下:
http://www.xxx.com/user/add
http://www.xxx.com/user/del

servlet就会收到这两个请求,根据request获取uri,拿到 /user/add 和 /user/del ,去路由map找到对应的方法。然后再通过反射来执行即可。

这篇关于Java如何通过注解映射URL相应的action的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆