仅对  @requestMapping("/xxxx/其他参数")  的格式

package cc.wshao.springmvc.util;

import java.io.File;

import java.lang.reflect.Method;

import java.net.URL;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import cc.wshao.springmvc.service.RightService;

public class RegRightUtils {

private static final String rootUrl = "/spring";

private static RightService rightService;

public static void main(String[] args) throws Exception {

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

rightService = context.getBean(RightService.class);

ClassLoader classLoader = RegRightUtils.class.getClassLoader();

URL url = classLoader.getResource("com/er07/book/springmvc/controller");

String rootPath = url.getPath().toString();

File rootFile = new File(rootPath);

File [] files = rootFile.listFiles();

for(File f: files) {

System.err.println(f.getName());

String className = f.getName().substring(0, f.getName().indexOf(".class"));

Class clazz = Class.forName("com.er07.book.springmvc.controller."+className);

parseClass(clazz);  //解析  出url

}

}

public  static void parseClass(Class clazz) {

if(clazz.isAnnotationPresent(Controller.class)) {   //是否为一个controller ?

String classUrl ="";

if(clazz.isAnnotationPresent(RequestMapping.class)) {

RequestMapping requestMapping_clazz = (RequestMapping) clazz.getAnnotation(RequestMapping.class);

classUrl = requestMapping_clazz.value()[0];

if(classUrl.equals("/")) {  //如果是"/" 的话  制空

classUrl ="";

}

}

Method [] ms = clazz.getDeclaredMethods();

for(Method m :ms) {

if(m.isAnnotationPresent(RequestMapping.class)) {

RequestMapping requestMapping_method = m.getAnnotation(RequestMapping.class);

String methodUrl = requestMapping_method.value()[0];

int  index = methodUrl.indexOf("/");

index = methodUrl.indexOf("/",index+1);

if(index!=-1) {  //如果存在 则进行截取前面的url

methodUrl = methodUrl.substring(0, index);

}

String resultUrl = rootUrl+classUrl+methodUrl;

rightService.appendRightByUrl(resultUrl);

}

}

}

}

}

//实现方法:

public void appendRightByUrl(String url) {

//查询 此url 在数据库中是否存在  此权限

String hql = "from Right where rightUrl =?";

Right r = (Right) this.rightDao.uniqueResult(hql, url);

if(r==null) { //不存在 , 插入数据库中

Right newRight = new Right();

newRight.setRightUrl(url);

this.saveOrUpdateRight(newRight);

}

}

Java扫描注解下的包_使用Spring mvc 利用java的反射技术,来扫描对应包下的注解请求url 统一保存在数据库中...相关推荐

  1. java 加载class文件路径_动手实现MVC: 1. Java 扫描并加载包路径下class文件

    背景 用过spring框架之后,有个指定扫描包路径,然后自动实例化一些bean,这个过程还是比较有意思的,抽象一下,即下面三个点 如何扫描包路径下所有的class文件 如何扫描jar包中对应包路径下所 ...

  2. 简单开源java ssm_[VIP源码]【S006】SSM(Spring+Spring MVC+Mybatis) java开源博客管理系统项目源码...

    java源码项目名称:SSM(Spring+Spring MVC+Mybatis) java开源博客管理系统项目源码  java项目源码 1 ?, R, _* q  n8 v) S$ R7 ?百度网盘 ...

  3. Java:控制台输入车辆信息,将信息保存至数据库中

    程序功能:控制台输入车辆信息,将信息保存至数据库中 程序代码如下: BaseDao.java package DAO_dome.kehozuoye; import java.sql.Connectio ...

  4. springmvc流程_基于Spring MVC框架的Http流程分析

    一.问题提出 我们可以方便的利用Spring MVC进行业务开发,请求的大部分工作都被框架和容器封装,使得我们只需要做很少量的工作.但是整个http请求流程是怎么样的?Spring MVC框架在其中起 ...

  5. java将dxf展示在网页_七天串起java技术栈-第四天

    上期回顾与本期预告: 昨天,我们从一个页面出发,搞清楚了前端,后端,接口的概念.并且还引出了servlet与tomcat. 今天,继续我们的探索之旅,看看又会接触到什么新玩意. step15:使用se ...

  6. java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]

    本文主要向大家介绍了JAVA语言的Spring MVC注解式开发使用详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处 ...

  7. java 根据类名示例化类_如何使用示例从Java中的类路径加载资源

    java 根据类名示例化类 Java中的类路径不仅用于加载.class文件,而且还可以用于加载资源,例如属性文件,图像,图标,缩略图或任何二进制内容. Java提供了API来将这些资源读取为Input ...

  8. java无法读取方案文档_解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题...

    问题 一个用Spring建的java项目,在Eclipse或idea中运行正常,为什么打包后运行出现如下错误呢? 2019/07/10/19:04:07 WARN [main] org.springf ...

  9. java集合到线程的考试_成都汇智动力-Java SE考试编程题总结

    原标题:成都汇智动力-Java SE考试编程题总结 线程和进程的区别: (1)进程是运行中的程序,拥有自己独立的内存空间和资源; (2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; ...

最新文章

  1. 皮一皮:论出门带物的重要性...
  2. 我服了!一些比较恶心的代码片段
  3. 求最大、次大和第3大的值
  4. 保守官僚 诺基亚就这样迷失在智能机时代?
  5. java判断有没有修改,java字节码判断对象应用是否被修改
  6. Qt creator5.7 OpenCV249之高斯滤波(含源码下载)
  7. html滑动验证图片,js插件实现图片滑动验证码
  8. 远程桌面连接Windows后显示蓝屏
  9. Python系列 之 ReportLab库 pdfgen模块Canvas对象绘制图形和文本
  10. Redis数据结构-sds
  11. 那些值得我们用心体会的惊艳歌词
  12. 利用SS7漏洞可追踪全球数十亿部手机 黑客千里之外窃听澳洲议员
  13. Excel一个图中设置两个纵坐标
  14. 【Java8新特性--->异步处理】CompletableFuture
  15. 串口服务器 linux,基于Linux的串口服务器设计与实现
  16. Dad34 Java对象的内存形式
  17. 汽车发动机如何做保养,名悦集团教你几个小技巧
  18. Will的替代词汇_59
  19. linux下TSL如何升级,glibc升级
  20. 基础乐理--配置和弦

热门文章

  1. 关于无法修改CheckBox样式的解决方案
  2. 在Android Studio中打开Android Device Monitor时报错的解决方法
  3. 完美解决tar文件window解压问题
  4. Ajax跨域问题的两种解决方法
  5. mysql启动错误1067进程意外终止的解决方法
  6. 在setInterval函数中传递参数
  7. 将现有Git存储库推送到SVN
  8. 如何确定我的Python Shell是在OS X上以32位还是64位模式执行?
  9. CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境
  10. macOS下nginx配合obs做推流直播.md