首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

一个自己的springMVC

今天我们来实现一个简单的springMVC框架,可以理解为 springMVC1.0这个版本,只是功能比较简单而已; 废话不多说,进入正题;先看看springMVC的简单流程; 我们请求的地址会被dispatchservlet...,但是我们可以让它变得智能起来,我们可以利用handlerMapping来告诉 dispatchServlet,它应该调用哪个方法; 为了让这个框架不那么笨,我借用了spring的IOC 思想, 实现一个容器来管理我的...这个框架和你印象中使用springmvc 很相似,你应该能回想起 springMVC的零零点点,然后看看这个简单的框架是如何实现这些功能的; 首先看下项目工程: 首先,我们先看maven 依赖,没错,自己实现的框架当然不用...请参考这里 的初始化细节; servlet 对象在初始化的时候,容器会给它提供一个 ServletConfig 对象  去读取 web.xml中的配置; 我们得到要扫描的路径后,可以就需要实现spring...的IOC了; 我们为了得到所有bean;在拿到项目的包路径后,可以转换为文件路径,然后再从文件路径中得到所有的类名; 得到类名后,就可以通过反射进行实例化了,然后将这些需要管理的东西放到一个容器中管理,

1.2K140

一个自己的springMVC?

今天我们来实现一个简单的springMVC框架,可以理解为 springMVC1.0这个版本,只是功能比较简单而已; 废话不多说,进入正题;先看看springMVC的简单流程; ?...但是我们可以让它变得智能起来,我们可以利用handlerMapping来告诉 dispatchServlet,它应该调用哪个方法; 为了让这个框架不那么笨,我借用了spring的IOC 思想, 实现一个容器来管理我的...首先,我们先看maven 依赖,没错,自己实现的框架当然不用spring的jar包了; 并为了方便大家理解,我的取名和spring原来的风格多少有些类似; 首先看到annotation包,@Autowired...请参考这里 的初始化细节; servlet 对象在初始化的时候,容器会给它提供一个 ServletConfig 对象  去读取 web.xml中的配置; 我们得到要扫描的路径后,可以就需要实现spring...的IOC了; 我们为了得到所有bean;在拿到项目的包路径后,可以转换为文件路径,然后再从文件路径中得到所有的类名; 得到类名后,就可以通过反射进行实例化了,然后将这些需要管理的东西放到一个容器中管理

44740

自己一个 json parser

---- 简单来说,parser就是个转换器,输入是一个字符串,而输出是一个自己定义一个数据结构。...我们将一个字符串进行初次解析,将一个一个的符号,变成我们的数据结构(Token),每个Token会标识,“它”是什么, 例如: 一个字符串"some"可能会被转换成: Token { type:...很简单,Token也是我们自己定义的数据结构,而且它在内存中,我们想怎么用它就可以 怎么用它. 第二步,编写Parser!...换句话说,我们就是给Json增添一个toString方法。而且,Json是我们自己定义的有规则的数据结构,实现它变成 String的操作就简单了许多。...,左右两边各有一个方括号。里面的元素之间由逗号相隔(除了最后一个元素外,其他元素后尾随一个逗号)。

1.3K10

自己一个mvc框架吧(五)

自己一个mvc框架吧(五) 给框架添加注解的支持 一段废话 上一章本来是说这一章要写视图处理的部分,但是由于我在测试代码的时候需要频繁的修改配置文件,太麻烦了。...怎么呢? 因为在之前代码的时候,我把每个类要做的事情分的比较清楚,所以在添加这个功能的时候写起来还是比较简单的,需要修改的地方也比较小。...一个方法,根据package中值找到其中所有的class。...多么简单呀~~~ 现在开始 定义一个注解Request 关于怎样自定义注这件事,大家可以上网搜一下,比较简单。我这里只是简单的说一下。...一个包扫描的方法 这个方法需要将项目中jar文件和文件夹下所有符合条件的class找到,会用到递归,代码在ClassUtils.java中,由三个方法构成,分别是: 1:**void getClassByPackage

31950

自己一个mvc框架吧(二)

自己一个mvc框架吧(二) 自己代码的习惯 一个框架吧,如果这个框架会用到一些配置上的东西,我自己习惯是先不用考虑这个配置文件应该是怎样的,什么形式的,先用一个java对象(比如叫 Config.java...等到功能写的差不多了,需要考虑到使用配置文件了,就可以一个工厂类,根据不同的配置(可能是xml,可能是json,甚至是注解)把刚才说的 Config.java 对象生成出来。...现在开始~ 我们先写URL与Method的映射关系 装模做样的分析一下 因为一个mvc的框架个人感觉主要做的事情就是通过http请求调用java中的方法。...mapping.setObjectClass(objectClass); mapping.setParamNames(paramNames); return mapping; } 在这个方法里,我用自己一个断言的工具类...因为这两个类是将整个Class的方法都扫描一遍,所以我们需要自己两个类来继承它,在里面添加我们需要的逻辑。

37070

自己一个mvc框架吧(一)

自己一个mvc框架吧(一) 之前的一些废话 废话 1 (总是要先随便说点啥) 写了好几年的java程序,基本上每个项目都有用到mvc的框架,可能是spring mvc也可能是struts。...这些框架怎么用相信大家也都很熟悉了,但是有没有想过自己一个属于自己的mvc的框架呢?有没有想过为啥你请求一个http的地址,你的一个class里的方法就能被执行了呢?...现在咱们开始一个mvc框架吧。 因为2年前自己写过一个mvc的框架,比较烂,但是也能用。所以大致需要的知识点我写在下面,再写一个应该也还是这些东西。...第五步 一个http请求的入口,并加一些配置 这里开始一个请求的入口了,spring使用的入口是一个 servlet,struts用的是一个filter,我在这里也用一个servlet。...博客的话一般我是自己先写一部分代码,然后在根据代码的思路一点博客,可能写着写着就和之前的不太一样了。不过我尽量吧我自己的思路说清楚。 废话说完了 现在就开始吧~ 嗯。

45710

自己一个jqery的拖拽插件

实现的功能:能够指定拖拽的边界,在拖拽过程中,能够触发几个自己定义事件 先说明一下我的插件的原则: 1.常量分离出来,放在$.zUI.插件中 2.插件的主体运行函数命名为$.zUI.插件.fn 3.销毁函数命名为...$.zUI.插件.unfn 这些规范,主要是为了以后其它插件时,放在一起,精简代码用的,以后可能还会添加�其它规则,以写出一个骨架来。...$.zUI[unWidget].unfn(this); }); return this; } $.fn.extend(w); }); 这里是不是有点乱,事实上这么主要是为了以后方便...; each除了在jq对象上用之外,还能够使用$.each(Array,fnCallBack);之后加入�新的插件后,依照我之前的标准,仅仅须要在第一个參数上加入�其它字符串就能够了。...最后,用一个匿名函数自运行把他们都包起来,为了防止$符号被其它的插件使用,传一个jQuery过去: (function($){ ....... })(jQuery); 到此为止,

97320

自己一个mvc框架吧(四)

自己一个mvc框架吧(四) 一个请求的入口,以及初始化框架 上一章写了获取方法的入参,并根据入参的参数类型进行数据转换。这时候,我们已经具备了通过反射调用方法的一切必要条件。...属性的说明: 1:UrlMethodMappingFactory :用来创建url与Method的映射关系:UrlMethodMapping的工厂类,在 自己一个mvc框架吧(二)这一篇中有说到。...url描述是我自己定义的一个东西,结构基本上是这样的:请求类型+“:”+请求地址。例子:“ GET:/index ”。...4:objectFactory:对象工厂,用来实例化对象用的,在 自己一个mvc框架吧(二)这一篇中有说道。...有一个BUG 这个bug是在 自己一个mvc框架吧(二) 这一章的通过asm获取方法入参名称的时候出现的,之前的代码是这样的: ClassReader classReader = null; try

45720

自己一个mvc框架吧(三)

自己一个mvc框架吧(三) 根据Method获取参数并转换参数类型 上一篇我们将url与Method的映射创建完毕,并成功的将映射关系创建起来了。...我们一步一步的,先写一个基本数据类型转换的。...为啥不直接一个Class,里面直接写实现代码呢? 因为我这里还有一个工厂类要用来获取ValueConverter.java的实现呀!...还要从接口 ValueConverter.java说起,java中的接口(interface)并不是为了在开发中一个service或者一个DAO让代码好看而定义的,而是让我们定义标准的。...; } } 这样就万事大吉了~~~ 再说点啥 之后想要添加其他的类型转换的话,只需要新几个实现类,然后修改一下工厂代码就好了,比较好扩展。这也是工厂类的原因。

50830

利用反射自己一个ModelHelper类

开发中 很多人都会使用BLL Model这种开发,我也是,虽然现在有很多的自动生成工具,能在几秒内生成cs的模板,但我个人还不是很喜欢,我还是喜欢自己一个一个,这样更能了解自己的代码。...不过手动编写的时候,最讨厌的就是GetModel这类方法了,把datarow的数据转换成一个Model,实在的我头疼,因为很多代码基本上都是一样的,一直想用反射来写这样一个方法,以后只要调用一个方法就能完成...今天又遇到此类代码了,一时火大,自己写了个方法,采用的反射的原理(从BlogEngine里学来的),或许这个方法比较笨拙,或许有其他更好的方法来实现,不过目前是能满足我的GetModel的需求了,也就凑活着放上来

78960

如何自己一个公用的NPM包

以markdown-clear,创建过程为例,讲解整个NPM包创建和发布流程 1 如何创建一个包 1.1 创建并使用一个工程 在GitHub上新建一个仓库,其名markdown-clear clone...1.4 添加.gitignore 文件,忽略不需要提交的文件变更 可以去github gitignore 下载一个最相近的模板然后改改 可以去gitignore.io生成一个,然后把内容拿下了 可以参考...gitignore.io 文档,自己配命令行工具,以便随时可以玩 我们这里生成了一个Node + IntellJ-all 的结果 内容语法参考gitignore doc 1.5 初始化NPM包 使用npm...babel转义后的es5代码的目录 -------------- docs // 代码相关的设计和使用文档 -------------- tests // 相关的测试目录 2.2 代码实现 代码...docs 目录 代码相关的设计和使用文档,没有自然可以不用 这里的文档应该在README.md 中会有入口。

1.6K100

如何自己一个公用的NPM包

创建并使用一个工程 在GitHub上新建一个仓库,其名markdown-clear clone 这个工程到本地 1.2 添加LICENCE或LICENSE文件, 说明对应的开源协议 到SPDX License...1.4 添加.gitignore 文件,忽略不需要提交的文件变更 可以去github gitignore 下载一个最相近的模板然后改改 可以去gitignore.io生成一个,然后把内容拿下了 可以参考...gitignore.io 文档,自己配命令行工具,以便随时可以玩 我们这里生成了一个Node + IntellJ-all 的结果 内容语法参考gitignore doc 1.5 初始化NPM包 使用npm...babel转义后的es5代码的目录 -------------- docs // 代码相关的设计和使用文档 -------------- tests // 相关的测试目录 2.2 代码实现 代码...docs 目录 代码相关的设计和使用文档,没有自然可以不用 这里的文档应该在README.md 中会有入口。

74120
领券