一 、java
博主正在教你们如何开发一个javaEE框架(Jvn框架),博客里有完整的开发视频,每一篇博文都是一个知识点,帮助你们理解框架:web
本次内容下载地址:http://pan.baidu.com/s/1hq3sng4spring
1,为何要使用java的框架,以及框架能带来什么好处。 2,帮助大家理解框架的原理。浏览器
3,框架是如何实现的。 4,怎样去开发一个属于本身的java框架。缓存
二、
目前开发的框架名字叫Jvn框架,本博主的名字:八哥解说,带领你们入门开发框架。
Jvn框架包含了如下特色:
1,mvc框架,相似StringMvc或者是struts那样的web框架,今后不在写servlet,今后不用在web.xml写servlet配置。mvc
2,orm框架,相似hibernate或者ibatis那样的框架,今后不在为复杂的jdbc操做烦恼。框架
3,spring框架,相似spring的框架,今后不在为bean的管理烦恼;学习
4,cache缓存机制。测试
5,定时调度。spa
6,自动生成在线文档。
7,拦截器
三、
每一篇博文都有视频详细解以及对应的源码,并且视频是连续的,想学习Jvn框架是如何开发的,建议从第一篇博文 Jvn入门读起。
Recall:上节课讲到到了如何获取浏览器传递过来的参数封装成咱们的Bean.
这节课咱们来实现:
1,自定义Annotation。
2,实现自定义拦截器。
实现的思路:
首先向定义一个本身的Annotation: aop ,而后再定义一个本身的拦截器Interceptor: JvnInterceptor.定义三个方法 before,after,exception
在通过过滤器的的时候 执行Controller方法以前,调用before,调用以后执行after,出现异常执行exception。
如下是内容的视频下载地址,以及源码地址:
http://pan.baidu.com/s/1hq3sng4
Ps:视频跟代码都会持续更新,但愿你们喜欢,多多支持。
QQ:245223343 永远的八哥
下面附上我写的代码:
这里是定义的一个Annotation
package com.jvn.annotation; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * 拦截器注解 * @author Administrator * */ @Retention(RetentionPolicy.RUNTIME) public @interface Aop { //拦截器名字 Class interceptor(); }
这是拦截器接口
package com.jvn.core; /** * 拦截器接口 * @author Administrator * */ public interface JvnInterceptor { //执行以前 public void before(); //执行以后 public void after(); //出现异常 public void exception(); }
这里是我框架调用拦截器的地方
package com.jvn.core; import java.lang.reflect.Method; import javax.management.RuntimeErrorException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jvn.annotation.Aop; /** * 处理action * @author Administrator * */ public class ActionHandle { /** * 处理 action * @param method * @param controller * @param req * @param resp */ public void handel(String methodName,Class controller,HttpServletRequest req , HttpServletResponse resp){ try { Object obj = controller.newInstance(); /** * 调用 setRequest,setResponse 把req跟resp两个参数注入进去 */ controller.getMethod("setRequest",HttpServletRequest.class).invoke(obj, req); controller.getMethod("setResponse", HttpServletResponse.class).invoke(obj, resp); Method method = controller.getMethod(methodName, null); /** * 第一步,先看一下 method有没有@Aop * 第二步,若是有,看一下Clazz是哪一个 * 第三部,建立对象,执行相应方法 */ Aop aop = method.getAnnotation(Aop.class); if(aop!=null){ JvnInterceptor interceptor = (JvnInterceptor) JvnConfig.beanFactory.createSimpleBean(aop.interceptor());
//执行方法以前执行 interceptor.before(); try{ method.invoke(obj, null); }catch(Exception e){
//出现异常 interceptor.exception(); throw new RuntimeException(e); } //执行方法以后执行 interceptor.after(); }else{ method.invoke(obj, null); } } catch (Exception e) { throw new RuntimeException(e); } } }
这是个人测试Controller
package com.everxs.test; import com.jvn.annotation.Aop; import com.jvn.core.JvnController; /** * 用户管理的Controller * @author Administrator * */ public class UserController extends JvnController{ /** * 删除一个用户,这里用了注解 */ @Aop(interceptor = MyInterceptor.class) public void delete(){ System.out.println("执行了delete方法"); } }