国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何開發一個java開源框架-----Jvn框架之實現自定義Annotation以及攔截器(第五講)

2019-11-15 00:20:55
字體:
來源:轉載
供稿:網友
如何開發一個java開源框架-----Jvn框架之實現自定義Annotation以及攔截器(第五講)前言

一 、

博主正在教大家如何開發一個javaEE框架(Jvn框架),博客里有完整的開發視頻,每一篇博文都是一個知識點,幫助大家理解框架:

本次內容下載地址:http://pan.baidu.com/s/1hq3sng4

1,為什么要使用java的框架,以及框架能帶來什么好處。 2,幫助你們理解框架的原理。

3,框架是如何實現的。 4,怎樣去開發一個屬于自己的java框架。

二、目前開發的框架名字叫Jvn框架,本博主的名字:八哥解說,帶領大家入門開發框架。Jvn框架包含了以下特點:1,mvc框架,類似StringMvc或者是struts那樣的web框架,從此不在寫servlet,從此不用在web.xml寫servlet配置。

2,orm框架,類似hibernate或者ibatis那樣的框架,從此不在為復雜的jdbc操作煩惱。

3,sPRing框架,類似spring的框架,從此不在為bean的管理煩惱;

4,cache緩存機制。

5,定時調度。

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方法");}}

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梅州市| 宁强县| 苍南县| 承德县| 临沂市| 灵台县| 博乐市| 开江县| 榆树市| 西和县| 稻城县| 咸宁市| 永修县| 大厂| 祥云县| 建瓯市| 定日县| 长垣县| 绥棱县| 萨迦县| 龙海市| 涿州市| 惠安县| 洱源县| 兰州市| 盱眙县| 南阳市| 明溪县| 孟连| 定州市| 丰台区| 司法| 鹤峰县| 石台县| 周至县| 唐海县| 丹江口市| 施甸县| 礼泉县| 深圳市| 屯昌县|