Java扫描注解下的包_使用Spring mvc 利用java的反射技术,来扫描对应包下的注解请求url 统一保存在数据库中...
仅对 @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 统一保存在数据库中...相关推荐
- java 加载class文件路径_动手实现MVC: 1. Java 扫描并加载包路径下class文件
背景 用过spring框架之后,有个指定扫描包路径,然后自动实例化一些bean,这个过程还是比较有意思的,抽象一下,即下面三个点 如何扫描包路径下所有的class文件 如何扫描jar包中对应包路径下所 ...
- 简单开源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 ?百度网盘 ...
- Java:控制台输入车辆信息,将信息保存至数据库中
程序功能:控制台输入车辆信息,将信息保存至数据库中 程序代码如下: BaseDao.java package DAO_dome.kehozuoye; import java.sql.Connectio ...
- springmvc流程_基于Spring MVC框架的Http流程分析
一.问题提出 我们可以方便的利用Spring MVC进行业务开发,请求的大部分工作都被框架和容器封装,使得我们只需要做很少量的工作.但是整个http请求流程是怎么样的?Spring MVC框架在其中起 ...
- java将dxf展示在网页_七天串起java技术栈-第四天
上期回顾与本期预告: 昨天,我们从一个页面出发,搞清楚了前端,后端,接口的概念.并且还引出了servlet与tomcat. 今天,继续我们的探索之旅,看看又会接触到什么新玩意. step15:使用se ...
- java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]
本文主要向大家介绍了JAVA语言的Spring MVC注解式开发使用详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处 ...
- java 根据类名示例化类_如何使用示例从Java中的类路径加载资源
java 根据类名示例化类 Java中的类路径不仅用于加载.class文件,而且还可以用于加载资源,例如属性文件,图像,图标,缩略图或任何二进制内容. Java提供了API来将这些资源读取为Input ...
- java无法读取方案文档_解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题...
问题 一个用Spring建的java项目,在Eclipse或idea中运行正常,为什么打包后运行出现如下错误呢? 2019/07/10/19:04:07 WARN [main] org.springf ...
- java集合到线程的考试_成都汇智动力-Java SE考试编程题总结
原标题:成都汇智动力-Java SE考试编程题总结 线程和进程的区别: (1)进程是运行中的程序,拥有自己独立的内存空间和资源; (2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; ...
最新文章
- 皮一皮:论出门带物的重要性...
- 我服了!一些比较恶心的代码片段
- 求最大、次大和第3大的值
- 保守官僚 诺基亚就这样迷失在智能机时代?
- java判断有没有修改,java字节码判断对象应用是否被修改
- Qt creator5.7 OpenCV249之高斯滤波(含源码下载)
- html滑动验证图片,js插件实现图片滑动验证码
- 远程桌面连接Windows后显示蓝屏
- Python系列 之 ReportLab库 pdfgen模块Canvas对象绘制图形和文本
- Redis数据结构-sds
- 那些值得我们用心体会的惊艳歌词
- 利用SS7漏洞可追踪全球数十亿部手机 黑客千里之外窃听澳洲议员
- Excel一个图中设置两个纵坐标
- 【Java8新特性--->异步处理】CompletableFuture
- 串口服务器 linux,基于Linux的串口服务器设计与实现
- Dad34 Java对象的内存形式
- 汽车发动机如何做保养,名悦集团教你几个小技巧
- Will的替代词汇_59
- linux下TSL如何升级,glibc升级
- 基础乐理--配置和弦