最简单的开源mvc

31、最简单的mvc框架tiny,增加Ioc,jdbc工具类(1个类),连接池(1个类)

允我心安 提交于 2020-04-07 05:31:27
Ioc 按照mvc,我们需要把tiny分成3层,其中视图(Renderer抽象类)和Action我们已经在前面实现了,这次我们用最少的代码实现Model。 model沿用Action的想法,用户自定义类,类名必须以Model结尾,同Action一样在初始化时放入Container容器内。model就是数据模型,我们这里充血模型,model的类名默认是同数据库的表名做关联的,即类名去掉Model后(转为小写)为表明,这样一对一映射,有时会简单很多,如保存和查询单个表时,当然了你可以传入复杂sql,返回的结果有基本类型、map、list等。 model里需要访问数据库时,我们设计了DbUtil工具类,建议在model里使用,当然了这个还是看你, DbUtil本身没有限制。model是通过ioc注入进来的,在你访问这个action前。下面代码中的Container.inject(o);为容器向action中注入model实例。 Map<String,String> args = this.converter(req.getParameterMap()); String key = UUID.randomUUID().toString(); Container.inject(o); this.before(routes,args,key); Object result = o

1、最简单的mvc框架tiny,3个类,彻底0配置,0注解

时光毁灭记忆、已成空白 提交于 2020-04-07 05:31:16
今天突发奇想,弄个最 最 最 简单的mvc,叫tiny,用3个类(2个类也可以 FrontControl.java和 Container.java )就可以实现mvc功能,彻底0配置,web.xml都不用配置。 类太少了,我不往git和svn上传了,贴代码; FrontControl.java为一个filter,init初始化所有后缀名为Action.class的类,为action类,保存。 doFilter方法将截获到的/ty/*开头的请求( 你可以自己修改下,注意有2处地方 ),做解析成路由,路由格式为“/类/方法”,在解析为数组,传给调用方法。 处理返回类型,有3种,void不处理;/开后,认为具体地址,如/userList.jsp;Renderer渲染器,我默认实现很多种(jsp、javascript、text、二进制、文件),你可以自己重写。 package tiny; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean;

30、最简单的mvc框架tiny,增加Aop

偶尔善良 提交于 2020-04-07 05:31:05
最简单的mvc框架tiny,增加Aop功能。 增加Aop接口,使用是实现即可。 然后设置路由(访问的action)和aop的绑定信息,类似如下: 下面的意思是把路由"/TinyTest/hello/"和TestAop.class做绑定,这样执行类TinyTestAction的hello方法时,就会自动执行 TestAop的before和after方法。 下面的BindingAop 的init方法,需要自己设置。系统启动时会自动读取。 public class BindingAop { public static void init(){ BindingUtil.binding("/TinyTest/hello/", new Class[]{TestAop.class}); BindingUtil.binding("/TinyTest/*", new Class[]{TestAop2.class}); } } Aop.java package tiny; import java.util.Map; public interface Aop { void before(Map<String,String> args); void after(Map<String,String> args); } BindingAop.java package tiny; import web