写一个工具生成数据库实体类java
项目地址在:github.com/hjx60149632… 。git
测试代码在:github.com/hjx60149632… 。github
写了好几年的java程序,基本上每一个项目都有用到mvc的框架,多是spring mvc也多是struts。这些框架怎么用相信你们也都很熟悉了,可是有没有想过本身写一个属于本身的mvc的框架呢?有没有想过为啥你请求一个http的地址,你的一个class里的方法就能被执行了呢?如今我们开始写一个mvc框架吧。spring
由于2年前本身写过一个mvc的框架,比较烂,可是也能用。因此大体须要的知识点我写在下面,再写一个应该也仍是这些东西。数据库
反射json
基本上要写点框架性质的代码就都须要用到反射的知识。mvc
json,xml之类的配置文件的解析框架
或多或少均可能须要一点。jsp
注解方面的工具
若是不想使用配置文件的话,自定义注解是确定要有的。
servlet
由于http的入口就是这一个,确定要用到。若是你要是要用filter,那你就要比较熟悉filter。
asm
这个是由于要获取方法上的参数名称,使用反射取参数名称通常都是arg0,arg1这样的,除非有特别的配置。
别的应该没了
大体说一下要写一个mvc我们都须要干点啥。
你须要一个 地址和一个方法的映射(这个地址但是一个http的地址,也能够单纯的就是一个随意的字符串或者别的东西,由于这里写的是mvc框架,因此就肯定它是一个http的请求地址)。
这个映射关系能够先用一个java对象保存起来,以后咱们能够根据不一样的形式来获取到这些数据并填充这个对象。这些数据或许是经过注解,或许是xml文件,也多是json文件来获得,只须要根据不一样的形式来写不一样的实现代码就行了,最终只要获取到这个映射关系就好。
请求地址与方法的映射建立完成以后,咱们须要知道这个方法里面都有那些参数,每一个参数的名称和参数类型是什么。
这是使用了asm框架。不了解的的同窗能够搜一下,他是一个处理java字节码的工具,各大知名框架里都有用到,很是强大。我在这里用这个的主要缘由是使用它获取方法的参数名称,由于反射的话没有特殊配置是取不到正确的名称的,可是我又不想有特殊配置~~~
由于咱们是经过http请求来调用java的方法,因此咱们要把http请求中的参数取出来并转换成为对应方法中实际的参数类型。好比一个方法的入参是 两个int类型的数据,咱们就要将http请求中的String类型的数据转换成为int类型。
这一步咱们不须要先直接处理http的请求,先用一些String类型的数据作一些测试便可。处理http请求的地方能够在后面再写。
这里没什么好说的,反射中的知识点。
这里开始写一个请求的入口了,spring使用的入口是一个 servlet,struts用的是一个filter,我在这里也用一个servlet。
这里咱们须要定义一个配置文件,用来描述上面的映射关系。若是要使用注解的形式,还要自定义一些注解,并写一个包扫描的来处理这些注解。总之就是要吧上面定义的 请求地址与方法映射 的这个对象数据填充起来。
而后将每次请求过来以后,根据不一样的请求路径,获取其映射的方法。以后执行这个方法。
这里可能有点麻烦,由于要能适应到不一样的视图解析之类的,多是jsp,freemarker,或者别的啥的。须要好好设计一下代码。
由于我本身尚未写到,因此先打算以字符串形式直接返回。
这个东西我刚开始写,代码在:github.com/hjx60149632… 。
至于何时写完?这个就要看公司里忙不忙了,可是基本上能保证这个是能写完的。
博客的话通常我是本身先写一部分代码,而后在根据写代码的思路写一点博客,可能写着写着就和以前的不太同样了。不过我尽可能吧我本身的思路说清楚。
如今就开始写吧~
嗯。下一篇开始具体更新每一步怎么写。