版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34169240/article/details/81184985
在我们平常的项目里面经常需要进行权限配置,其中有一个就是先把项目里面的请求的路径存进去,之后在进行一系列的设置,但是每次都要从代码里面复制粘帖就很麻烦了。
在Spring MVC中是可以很方便的获取到请求的信息的。
//Controller 层----
@RequestMapping(value = "/Authority", params = "requestMapping", name = "读取指定功能
模块的所有Action的URL地址")
@ResponseBody
@SystemLog(eventType = 0, operDec = "获取指定模块所有Action地址", operType = 4)
public List<Map<String, String>> authority(String moduleUrl) {
return authService.getActions(moduleUrl);
}
//serviceimpl层----
@Autowired
private final RequestMappingHandlerMapping requestMapping = null;
@Override
public List<Map<String, String>> getActions(String moduleUrl) {
List<Map<String, String>> resultMap = new ArrayList<Map<String, String>>();
Map<RequestMappingInfo, HandlerMethod> maps = requestMapping.getHandlerMethods();
if ((moduleUrl != null || (!"".equals(moduleUrl))) &&
(maps == null || maps.isEmpty()))
return resultMap;
for (RequestMappingInfo val : maps.keySet()) {
Set<String> urls = val.getPatternsCondition().getPatterns();
String[] arrayUrl = urls.toArray(new String[0]);
int urlIndex = Arrays.binarySearch(arrayUrl, "/" + moduleUrl);
if (urlIndex >= 0) {
String parentUrl = "";
Class<?> classz = maps.get(val).getBeanType();
//取得类的 注解路径
RequestMapping rm = (RequestMapping) classz.getAnnotation(RequestMapping.class);
if (rm != null)
parentUrl = getArrayOneValue(rm.value());
//System.out.println(Arrays.toString(rm.value()));
//取得方法的注解路径
Method[] methods = classz.getDeclaredMethods();
for (Method method : methods) {
try {
rm = (RequestMapping) method.getAnnotation(RequestMapping.class);
if (rm != null) {
String requestMappingValue = getArrayOneValue(rm.value());
String requestMappingParam = getArrayOneValue(rm.params());
String requestMappingName = rm.name();
if (requestMappingValue.indexOf("/") < 0)
requestMappingValue = '/' + requestMappingValue;
Map<String, String> item = new HashMap<String, String>();
item.put("url", parentUrl + requestMappingValue);
item.put("desc", requestMappingName);
item.put("params", requestMappingParam);
resultMap.add(item);
}
} catch (NullPointerException error) {
error.printStackTrace();
}
}
break;
}
}
return resultMap;
}
以下引用自https://blog.csdn.net/zheng_sida/article/details/54583292的解释
在我们平常的项目里面经常需要进行权限配置,其中有一个就是先把项目里面的请求的路径存进去,之后在进行一系列的设置,但是每次都要从代码里面复制粘帖就很麻烦了。
在Spring MVC中是可以很方便的获取到请求的信息的。
在Spring MVC已经可用的情况下,直接注入RequestMappingHandlerMapping
//获取所有的请求信息
Map<RequestMappingInfo, HandlerMethod> requestMappingInfoMap = requestMappingHandlerMapping.getHandlerMethods();
- RequestMappingInfo:就是@RequestMapping 对应的信息;
HandlerMethod:@RequestMapping对应方法的详情,包括方法、类及参数。
下面是获取几个常用的信息:
//请求路径
PatternsRequestCondition patternsRequestCondition = requestMappingInfo.getPatternsCondition();
//请求方法(GET,POST等)
RequestMethodsRequestCondition requestMethodsRequestCondition = requestMappingInfo.getMethodsCondition();
//请求的媒体类型(application/json,text/html等)
ProducesRequestCondition producesCondition = requestMappingInfo.getProducesCondition();
参考 :https://blog.csdn.net/zheng_sida/article/details/54583292