会逐步添加AOP
总结:搭建了一个简单的MVC框架,定义了一系列的注解,@Controller定义Controller类,@Inject注解实现依赖注入,@Action定义Action方法。通过Helper类来初始化MVC框架;通过DispatcherServlet来处理所有请求;根据请求方法与请求路径来调用具体的Action方法,判断Action方法的返回值,若为View类型,跳转JSP页面,若为Data类型,则返回JSON数据。
1.建立PropsUtil工具类(加载属性文件以及获取属性)
2.建立ArrayUtil工具类(判断数组是否为空等)
3.建立CollectionUtil工具类(判断Collection(Map)是否为空)
4.建立StreamUtil工具类(流操作工具类,如:从输入流获取字符串)
5.建立CodecUtil工具类(用于URL的编码与解码操作)
6.建立jsonUtil工具类(处理Json与POJO之间的转换,基于jackson实现)1.建立ConfigConstant的常量类(维护配置文件——smart.properties的相关配置,如:jdbc相关内容——名字(如:String
JDBC_URL=“smart.framework.jdbc.url”))
2.建立ConfigHelper助手类(定义静态方法——关于获取常量类中所包含的内容的静态方法(如:getJdbcUsername()))
3.建立一个ClassUtil工具类(提供与类操作相关的方法,如:获取类加载器、加载类、获取类等)
4.建立注解类(如:@Controller、@Action、@Service、@Inject)
5.建立ClassHelper助手类(类操作助手类,封装ClassUtil,让其获取应用包名下所有类、Service类、Controller类和Bean类)
6.建立一个反射工具类——ReflectionUtil(通过类来实例化对象——实现Bean容器)
7.建立Bean助手类(Bean容器)——BeanHelper(封装反射工具类,获取或设置Bean的实例及映射)
8.创建IocHelper助手类(完成依赖注入功能,从BeanHelper获取BeanMap(记录了类与对象的映射关系),遍历这个映射关系,取出里面的Bean类和Bean对象,在通过反射获取类的成员变量。遍历这些变量,判断是否带有注入注解,如果存在,从BeanMap中取出Bean实例,然后通过RelfectionUtil修改当前成员变量的值)
9.建立实体类——Request类(封装请求信息,如:方法、路径)
10.建立实体类——Handle类(封装Action信息——处理对象,如:Controller类、Action方法)
11.创建ControllerHelper类(获取定义了Controller注解的类,可以通过反射获取该类中所有带有某注解(如:Action)的方法,获取注解中的请求表达式,进而获取请求方法与请求路径,封装请求对象与处理对象,建立映射关系,放入Map中,并提供一个根据请求方法与请求路径获取处理对象的方法)
12.各个助手类的静态代码块会被加载,可以建立一个统一的类集中加载——HelperLoader类
13.建立实体类——Param(封装请求参数对象,是一个Map)
14.建立实体类——View类(返回视图,path——视图路径、model——模型数据是个Map)
15.建立实体类——Data类(返回数据类型为json——Object)
16.建立请求转发器——DispatcherServlet(继承HttpServlet类)类(初始化、获取对象、注册jsp的servlet,注册静态资源默认servlet,重写service方法(获取请求方法与请求路径、action处理器、获取Controller类及其Bean实例、创建请求参数对象、调用Action方法、处理Action方法——返回视图或者数据(request的forward方法还或者输出json数据)))
源代码下载:
https://download.csdn.net/download/weixin_43075298/11123094