开源mvc

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