从零写一个JavaWEB框架的演进
13页1、从零写一个从零写一个 JavaJava WEBWEB 框架的演进框架的演进从一个简单的 Servlet 项目开始起步,对每一层进行优化,然后形成一个轻量级的框架。 每一篇,都是针对项目的不足点进行优化的。 项目已放上 github。项目现在也跑起来了,而且 Server 和 Dao 层都已经封装好了,都可以专心处理各自的业务逻辑,耦合度也低了很多。但是项目还是有很多需要改进的地方。例如:Controller 层 的耦合度还是非常高。首先请求由 doGet()和 doPost()获取,然后从消息头里面获取 url 或者参数,然后进行逻辑判断是需要进行哪些业务。当业务多的时候,Controller 层就会变得很臃肿,而且耦合度很高。层与层之间的调用还需要手动 New 对象,这里也可以实现”控制反转”的思想。框架实现框架实现项目结构我还是决定在原来的项目上进行开发。所以前期框架的封装代码会与业务代码放在同一个包下,等开发完成,再抽取出来,我觉得这样会更加容易理解。项目结构:annotation : 元注解。自定义的一些注解。 config:配置,主要存放定义了框架配置的Key.(根据 key
2、 来获取 properties 文件的 values) Helper: 对工具类,配置类 的封装。Util : 工具类。ClassUtil 类一个类的加载器,该类主要根据类名,或者包名来加载类。? 1 2 3 4 5 6 7 8 9 10 11public class ClassUtil private static final Logger log = LoggerFactory.getLogger(ClassUtil.class);/* 获取类加载器* */public static ClassLoader getClassLoader() return Thread.currentThread().getContextClassLoader();12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55/* 加载类* */public static Class loadClass
3、(String className, boolean isInitialized) Class cls=null;try cls = Class.forName(className, isInitialized, getClassLoader(); catch (ClassNotFoundException e) e.printStackTrace();return cls;/* 获取指定包名下的所有类* */public static Set getClassSet(String packageName) Set classSet = new HashSet();try / 获取到包名下所有类的 URLEnumeration urls =getClassLoader().getResources(packageName.replace (“.“, “/“);/ 开始遍历while (urls.hasMoreElements() URL url=urls.nextElement();if (url != null) String protocol = url.getProtocol()
4、;if (protocol.equals(“file“) String packagePath = url.getPath().replaceAll(“%20“, “ “);addClass(classSet, packagePath, packageName); else if (protocol.equals(“jar“) JarURLConnection jarURLConnection = (JarURLConnection) url.openConnection();56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99if (jarURLConnection != null) JarFile jarFile = jarURLConnection.getJarFile();if (jarFile != null) Enumeration jarEntries = jarF
《从零写一个JavaWEB框架的演进》由会员m****分享,可在线阅读,更多相关《从零写一个JavaWEB框架的演进》请在金锄头文库上搜索。
DB2发生死锁情况时应该怎么处理
Python 为何能成最强编程语言
面试前必须要知道的Redis面试
MySQL下自动删除指定时间以前的记录的操作方法
深入理解FastCGI协议以及在PHP中的实现
MySQL数据库性能优化之硬件瓶颈分析
NoSQL数据库大全收集整理
2018 – 2019 年前端 JavaScript 面试题
PHP文件包含漏洞的形式总结
5种使用Python代码轻松实现数据可视化的方法
改进JavaScript和Bust的互操作性:深入认识wasm-bindgen组件
C#图片缩放平移从功能分析到编码实现
详解网络蜘蛛的安全隐患及预防方法
利用NAP解除安全隐患自动隐藏你的IP地址
解决分布式数据库和离线网络中原子性问题的新方法
bbed恢复数据遇到延迟块清除的问题
Oracle Data Redaction数据加密
linux下du和df结果不一致的原因及处理
基于QMP实现对qemu虚拟机进行交互
解读Java并发队列BlockingQueue
2020-09-22 32页
2020-09-21 24页
2020-09-21 28页
2020-09-21 25页
2020-09-21 24页
2020-09-21 25页
2020-09-21 27页
2020-09-21 32页
2020-09-21 24页
2020-09-06 24页